본문 바로가기

반응형

코딩테스트(python)/백준

(29)
백준 18870번 파이썬 1. 문제 2. 설명 이 문제의 핵심은 파이썬의 '딕셔너리' 이다. 처음엔 입력받은 값들이 담긴 배열을 복사해서 비교해주면 안될까? 라고 생각했는데, 역시나 2중 for문은 타임아웃이 떴다. 답을 보니 타임아웃을 줄이기위해 set과 dic을 사용해야 했다. 코드 풀이) 입력받은 값들이 담긴 배열을 set -> sorted 후 list 형태로 만들어준다. dic에 key로는 각 인덱스에 해당하는 데이터를, value로는 각 인덱스 값을 넣어준다. 3. 코드 내가 작성한 코드) import sys n = int(sys.stdin.readline()) x = list(map(int, sys.stdin.readline().split())) copy = [] for i in x: copy.append(i); co..
백준 10841번 파이썬 1. 문제 2. 설명 파이썬은 stable 정렬을 한다. stable 정렬은 말 그대로 안정 정렬이다. 안정 정렬에서는 입력 받은 값들 중에 같은 값이 있는 경우 해당 값의 순서를 그대로 유지한다. 나이와 이름이 들어있는 배열 a를 나이순으로 정렬해준다. 즉, 각 행의 첫번째 인덱스를 기준으로 정렬 해준다. 3. 코드 import sys n = int(sys.stdin.readline()) a = [] for i in range (0,n): age, name = sys.stdin.readline().split() // age, name = map(str,sys.stdin.readline().split()) // age = int(age) a.append([age,name]) a.sort(key=lambd..
백준 1181번 파이썬 1. 문제 2. 설명 반복문을 통해 n번 입력 받고, 이를 배열에 추가해준다. 그 후 배열에서 중복을 제거해주기 위해 set을 사용하고, sort함수를 사용할 것이므로 list로 만들어준다. 최종적으로 길이가 가장 긴 것이 마지막 항목이 되어야하므로, 알파벳 순 정렬 후에 길이 순 정렬을 한다. key 속에 len이라는 옵션을 지정하여 정렬하면, 길이 순서대로 정렬이 된다. sort로 정렬 -> sort (key=len) 정렬을 하면, 사전 순을 유지한 상태에서 길이가 짧은 순서로 정렬이 된다. 3. 코드 다른 사람이 작성한 코드 1) n = int(input()) lst = [] for i in range(n): lst.append(input()) set_lst = set(lst) lst = list(..
백준 11651번 파이썬 1. 문제 2. 설명 11650번과 패턴은 동일하지만 y좌표를 기준으로 정렬하는 것이 다르다. sort() 메소드를 사용하기 위해 배열에 넣을 때 num2(y좌표), num1(x좌표)의 위치를 바꾸어 삽입한 후, a = [[4,0]]
백준 11650번 파이썬 1. 문제 2. 설명 map을 통해 x좌표와 y좌표를 입력받아 list로 만들어준 후 배열에 넣어준다. 즉, 2중 배열의 형태가 될 수 있게 배열안에 배열을 넣어준다! a = [[3,4]] a = [[1,-1],[1,1],[2,2],[3,3],[3,4]] 정렬이 끝나면 a[i][0],a[i][1]의 형태로 좌표값들을 출력해준다. 3. 코드 import sys n = int(sys.stdin.readline()) a = [] for i in range (0,n): num = map(int,input().split()) a.append(list(num)) a.sort() for i in range(0,len(a)): print(a[i][0],a[i][1])
백준 1427번 파이썬 1. 문제 2. 설명 내 풀이는 작동은 하지만 비교적 긴 편이다. 다른 풀이를 보면 list(map(int, input()))을 통해 입력 값을 정수로 이루어진 배열 형태로 받는다. 3. 코드 내 풀이) import sys n = sys.stdin.readline() a = [] for i in range(0,len(n)-1): a.append(n[i]) a.sort(reverse=True) for i in range (0,len(a)): if i < len(a)-1: print(a[i],end= '') else: print(a[i]) 다른 사람의 풀이) a = list(map(int, input())) a.sort(reverse=True) for i in a: print(i, end = '') prin..
백준 20305번 파이썬 1. 문제 2. 설명 1차원 배열 입력받기 num = list(map(int, input().split())) 내림차순 sort num.sort(reverse=True) 3. 코드 n, k = map(int, input().split()) num = list(map(int, input().split())) num.sort(reverse=True) print(num[k-1]) 1. 문자열, 배열 입력 받기 한 줄에 정수형 변수 여러개 입력 받기 a, b, c, d = map(int, input().split()) 한 줄에 문자열 변수 여러개 입력 받기 a, b = input().split() https://johnyejin.tistory.com/62 [Python] 문자열, 배열 입력 받기 1차원 배열 입..
백준 10989번 파이썬 1. 문제 2. 설명 카운팅 정렬은 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을때 사용 가능하다 . 이 문제의 경우에는 문제에 숫자의 범위가 10000까지 라고 정의되어있이 때문에 카운팅 정렬을 사용할 수 있다. 값끼리의 비교가 아닌, 값의 빈도수를 저장하여 정렬하므로 속도도 매우 빠르다. 시간 복잡도는 O(N+K) 이다. -> k : 입력받은 수 중 max 값 카운팅 정렬 알고리즘 1. 숫자의 범위만큼 값이 0인 배열 을 만들어 놓는다. 여기서 주의할 점! N의 범위는 10000이지만 배열의 인덱스는 0부터 시작하기 때문에 N이 10000일 경우를 대비하여 10001 개로 만들어줘야 한다. 2. x를 입력받고, x에 해당하는 인덱스에 1을 더해주며 각 x의 빈도수를 count 배열에 저장..

반응형