Data Science

코딩테스트

백준 2941번 파이썬 -크로아티아 알파벳

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 크로아티아 알파벳변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않..

코딩테스트

백준 2444번 파이썬 -별 찍기 - 7

https://www.acmicpc.net/problem/2444 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 출력 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. 예제 5 출력 * *** ***** ******* ********* ******* ***** *** * 내가짠 코드 a= int(input()) for i in range(1,a+1): print(' ' *(a-i) + '*' * i + '*' * (i-1)) for i in range(a-1,0,-1): print(' ' *(a-i) + '*' * i + '*' * (i-1))

코딩테스트

백준 3003번 파이썬 -킹, 퀸, 룩, 비숍, 나이트, 폰

https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 문제 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다. 체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른..

자료구조

문자열 검색

브루트 포스법 패턴을 한칸씩 움직여서 텍스트와 일치할때 까지 움직인다. 텍스트 인덱스 2 3 4 의 원소와 일치하여 검색에 성공한다. def bf_match(txt: str, pat: str) -> int: """브루트 포스법으로 문자열 검색""" pt = 0 # txt(텍스트)를 따라가는 커서 pp = 0 # pat(패턴)를 따라가는 커서 while pt != len(txt) and pp != len(pat): #패턴커서가 텍스트 끝까지 도착하지 않을때 if txt[pt] == pat[pp]: #텍스트의 문자와 패턴의 문자가 일치한다면 두 커서 모두 다음 위치로 이동 pt += 1 pp += 1 else: pt = pt - pp + 1 #문자가 일치하지 않는 경우, 텍스트의 탐색 위치를 하나 뒤로 옮기..

자료구조

병합 정렬, 힙 정렬, 도수 정렬

출처: Do it! 자료구조와 함께 배우는 알고리즘 입문 병합 정렬 두개의 배열을 합쳐 순서대로 정렬한다. 다음과 같이 sorted 함수로 나타낼수도 있다. c= list(sorted(a+b)) from typing import Sequence, MutableSequence def merge_sorted_list(a: Sequence, b: Sequence, c: MutableSequence) -> None: """정렬을 마친 배열 a와 b를 병합하여 c에 저장""" pa, pb, pc = 0, 0, 0 # 각 배열의 커서 na, nb, nc = len(a), len(b), len(c) # 각 배열의 원소수 while pa < na and pb < nb: # pa와 pb를 비교하여 작은 값을 pc에 저장..

자료구조

셸 정렬, 퀵 정렬

셸 정렬 셸 정렬은 배열의 원소를 그룹으로 나눠 각 그룹별로 정렬을 수행한다. h=4일때 4칸씩 떨어진 원소를 비교하여 바꿔준다. 8 1 4 2 7 6 3 5 h = 2일때, 2칸씩 떨어진 원소를 그룹으로 나눠 정렬한다. 7 1 3 2 8 6 4 5 3 1 4 2 7 5 8 6 두 그룹으로 나누어 두번 정렬 한다 h=1 로 하여 전체 그룹으로 한번 정렬을 수행한다. 1 2 3 4 5 6 7 8 이렇게 하여 총 7번 정렬을 하게 되고, 4그룹, 2그룹, 1그룹씩 나누어 정렬을 수행한다. def shell_sort(a: MutableSequence) -> None: """셸 정렬""" n = len(a) h = n // 2 while h > 0: for i in range(h, n): j = i - h tm..

자료구조

버블정렬, 단순 선택 정렬, 단순 삽입 정렬

출처: Do it! 자료구조와 함께 배우는 알고리즘 입문 버블정렬 버블정렬은 이웃한 두 원소의 대소관계를 비교하여 필요에 따라 교환을 반복한다. 7개의 원소 6,4,3,7,1,9,8를 대입했다. 패스는 비교 교환하는 과정을 말하는데 패스 1은 첫바퀴 정렬을 의미한다. 첫번째 패스 시 , 정렬 완료 전까지 n-1번의 정렬과정을 거친다. 가장 작은 원소 1이 맨 앞으로 이동한다. 두번째 패스 시 정렬 완료 전까지 n-2의 정렬과정을 거치고, 두번째로 작은 원소 3이 두번째 위치로 이동한다. 버블정렬 구조는 다음과 같다. def bubble_sort(a: MutableSequence) -> None: """버블 정렬""" n = len(a) for i in range(n - 1): for j in range(..

자료구조

하노이의 탑, 8퀸문제(재귀함수 응용)

하노이의 탑 출처: Do it!자료구조와 함께 배우는 알고리즘 입문 - 파이썬 편 재귀함수를 이용해 하노이의 탑을 구현해본다. 기둥이 세개 있고, 원반이 3개 있을때, 1번 2번 원반을 중간기둥으로 옮기고, 3번 원반을 목표기둥으로 옮긴후 1&2번 원반을 3번 원반이 있는 목표 기둥 위에 쌓아 올린다. def move(no:int,x:int,y:int)->None: #원반 no개를 x기둥에서 y기둥으로 옮김 if no >1: move(no-1,x,6-x-y) print(f'원반[{no}]를 {x}기둥에서 {y}기둥을 옮깁니다') if no > 1: move(no-1,6-x-y,y) print('하노이의 탑을 구현합니다') n = int(input('원반의 개수를 입력하세요 : ')) move(n,1,3)..

해파리냉채무침
'분류 전체보기' 카테고리의 글 목록 (5 Page)