[ 알고리즘 ]/오답노트25 [ BOJ 오답노트 ] 2108 파이썬 : 통계학 2022 02 19 1. 틀린 기록 2. 원인 분석 - 시간 초과 판정이 났다. 한 2%까지 채점되다가 시간초과가 딱 떠버린게 네번이다. ㅎㅎ - 문제 풀이 중에서 최빈값 (가장 많이 나온 값)을 찾는 부분에서 'count' 함수를 사용한 것이 시간초과의 원인이었다. - count 함수는 O(N)의 복잡도를 가지지만, 내가 짠 코드에서는 while 문 안에서 계속 선형 탐색하면서 연산하기 때문에 O(N^2)까지 연산량이 증가한 것으로 보인다. - 그래도 내 나름대로 i += count를 해주어서 그 다음 값이 현재 값과 같다면 굳이 확인하지 않아도 되게 설계했지만, 어차피 count 함수는 연산 중에 인덱스 0부터 끝까지 연산하기 때문에 의미가 없었던 것이다. 3. 해결 import sys input =.. 2022. 2. 19. [ BOJ 오답노트 ] 2751 파이썬 : 수 정렬하기 2 2022 02 16 1. 틀린 기록 2. 원인 분석 - 시간 초과 판정이 떴다. python 내장 함수인 sort를 사용했는데도 시간 초과 판정 결과가 떴다. - 질문을 검색 해보니, 입력 받는 값의 개수가 많으면 그걸로도 시간 초과 판정이 날 수 있다고 한다. 3. 해결 - 입력 받는 방법을 다음과 같이 바꿨더니 해결되었다. import sys input = sys.stdin.readline - 정렬하는 과정에서의 문제라기 보다는, 입력받을 때 에러가 났던 것이었다. import sys lst = [] input = sys.stdin.readline for nn in range(int(input())): lst.append(int(input())) lst.sort() for i in range(len(.. 2022. 2. 16. [ BOJ 오답노트 ] 1436 파이썬 : 영화감독 숌 2022 02 15 1. 틀린 기록 2. 원인 분석 - 컴파일 에러는 내가 일부러 오답 흔적을 남기려고 해둔 것이다. - 솔직히.. 어떻게 푸는지 모르겠어서 애먹었다. 하나씩 검토해보는 방법을 생각하지 않고, 규칙에 따라서 666 앞에 숫자를 붙이는 방법 등... 어렵게만 생각했던것 같다. - 어렵게만 생각했던 나의 끄적거림 흔적이다.. ㅠㅠ 3. 해결 n = int(input()) i = 666 count = 0 while True: if '666' in str(i): count += 1 if n == count: print(i) break i += 1 - 666부터 하나씩 증가시키면서 '666'이 존재하면 count 값을 1 증가시킨다. - 이때, count 값이 n번째가 되면, 666이 표함되어있는.. 2022. 2. 15. [ BOJ 오답노트 ] 1018 파이썬 : 체스판 다시 칠하기 2022 02 12 1. 틀린 기록 2. 원인 분석 - 다른 예제에서는 모두 올바른 출력이 나왔는데, 예제 입력 4에서 오류가 났다. - 나는 시작하는 체스 판을 기준으로 구했는데, 그러면 안됐던 것이었다. 3. 해결 saero, garo = map(int, input().split()) lst = [] # 입력된 보드의 상태를 저장하는 리스트 errorStorage = [] # 몇 개의 원소를 고쳐야 하는지 저장하는 리스트 -> 나중에 min(errorStorage) # 입력받기 for i in range(saero): lst.append(input()) # 검토하기 for i in range(0, saero-7): for j in range(0, garo-7): count = 0 for y in ra.. 2022. 2. 12. 이전 1 2 3 4 5 6 7 다음