본문 바로가기

Algorithm8

백준 18870번 좌표 압축 풀이 언어 : PYTHON 풀이 방법 : 정렬 # 난이도가 어려운 문제는 아니다. # 그저 입력한 값을 정렬한 다음에 # dic을 통해서 각 숫자가 앞에서 몇번째인지 key:value 쌍으로 입력해주면 끝이다 n = int(input()) dic = {} arr = list(map(int, input().split())) # 중복 제거하고 정렬 arr_sorted = list(sorted(set(arr))) dic = {} for (idx, val) in enumerate(arr_sorted) : dic[val] = idx for i in arr : print(dic.get(i), end=" ") 링크 18870번: 좌표 압축 (acmicpc.net) 2021. 9. 16.
백준 2108번 통계학 풀이 언어 : PYTHON 풀이 방법 : 카운팅 정렬 # 음수를 포함해서 정렬시키는 방법을 써야합니다. # 전에 써먹은 카운팅 정렬을 개량해서 사용합시다. # 최빈값이 문제입니다. 최빈값 끼리도 모아서 정렬을 시켜야합니다. import sys # 입력의 수 n = int(sys.stdin.readline()) # 수의 범위는 -4000~+4000입니다. 배열의 크기는 8001이면 충분합니다. arr = [0]*8001 avg = 0 many = 0 # for문을 돌려서 수를 입력받읍시다. for _ in range(n) : num = int(sys.stdin.readline()) # 입력받은 수가 음수일 수도 있으니 +4000을 해서 배열에 넣어줍니다. arr[num+4000] += 1 # 겸사겸사 최빈.. 2021. 9. 16.
백준 10989번 수 정렬하기 3 풀이 언어 : PYTHON 풀이 방법 : 카운팅 정렬 # 카운팅 정렬 # 각 수가 몇 번 등장했는지를 기록한 뒤 출력하는 기법 # 사전에 정렬할 수의 범위를 알고 있어야하고 # 그 수의 범위가 너무 커서도 안된다. # 상당히 짜증나는 문제. 입력을 sys.stdin.readLine()으로 받아야만한다. # 이 기회에 input을 버릴까. import sys n = int(sys.stdin.readline()) counting_arr = [0 for _ in range(10001)] for _ in range(n) : idx = int(sys.stdin.readline()) counting_arr[idx] += 1 for idx, val in enumerate(counting_arr) : while val.. 2021. 9. 16.
백준 1436번 영화감독 숌 풀이 언어 : PYTHON 풀이 방법 : 브루트포스 # 만약에 5가 입력? # 5666 이 더 크지 # 그럼 7이 입력? # 7666? 아니야. 6660이다. # 풀이방법은.... 10000 666까지 수를 센다 # 그 중에 666이 연속으로 들어가는 게 있다면 카운트를 센다 # 카운트가 입력한 수와 같아지면 그게 정답이 된다. num = int(input()) cnt = 0 for i in range(10000666) : if "666" in str(i) : cnt += 1 if cnt == num : print(i) break 링크 1436번: 영화감독 숌 (acmicpc.net) 2021. 9. 14.