본문 바로가기

알고리즘15

백준 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.
백준 1018번 체스판 다시 칠하기 풀이 언어 : PYTHON 풀이 방법 : 브루트포스 # White와 Black을 서로 체인지 시켜주는 함수 def switchWB(s) : if s == "W" : return "B" elif s == "B": return "W" # 판의 크기 입력 n, m = map(int, input().split()) # 체스판 입력 Map = list() for _ in range(n) : Map.append(input()) # 정답으로 제출할 새로 색칠할 칸의 최솟값 min = 10000000000 for i in range(n-7) : for j in range(m-7) : # 모든 경우의 수를 순회하면서 8*8 크기를 한 판 잘라냄... # 잘라낸 판에서 흰색으로 시작했을 때랑 검은색으로 시작했을 때 # 어.. 2021. 9. 14.