[ 알고리즘 ]/오답노트25 [ BOJ 오답노트 ] 15650 파이썬 : N과 M (2) 2022 03 01 1. 틀린 기록 2. 원인 분석 - 틀리지는 않았지만 생각하는 데에 오래 걸려서 오답노트를 적기로 했다. - 그 전 문제인 15649번과 다른 점이 동일한 쌍은 한번만 출력하도록 하는 것이다. - 따라서 출력할 때의 첫번째 원소가 기준이 되어서 그 다음 원소들이 점점 커지는 형태로 출력되어야 한다. 3. 해결 n, m = map(int, input().split(' ')) arr = [] def nm(start): if len(arr) == m: print(' '.join(map(str, arr))) else: for i in range(start, n+1): if i not in arr: arr.append(i) nm(i + 1) arr.pop() start = 1 nm(start).. 2022. 3. 1. [ BOJ 오답노트 ] 10989 파이썬 : 수 정렬하기 3 2022 02 28 1. 틀린 기록 2. 원인 분석 - 메모리 초과가 떴다. 아무래도 입력되는 모든 숫자들을 저장하는 방법으로 풀면 최대 입력 개수인 10000000 크기의 리스트가 필요하기 때문에 메모리 초과 판정을 받은 것 같다. - 그래서 생각한 방법은, 중복적으로 들어오는 값을 횟수만큼 저장하는 것이 아니라, 입력될 수 있는 가장 작은 숫자인 1부터 입력될 수 있는 가장 큰 숫자인 10000을 저장할 수 있는 리스트를 미리 만들어 두는 것이다. - 이 리스트를 0으로 초기화하고, 나오는 개수만큼 +1 해주어서 입력된 횟수만큼 반복해서 출력해주는 방식으로 정렬하는 것이다. - 이 방법은 굳이 sort() 를 사용하지 않아도 된다는 점과 리스트의 크기를 줄일 수 있다는 점에서 유용한 방식이라고 생각했.. 2022. 2. 28. [ BOJ 오답노트 ] 18870 파이썬 : 좌표 압축 2022-02-26 1. 틀린 기록 2. 원인 분석 - 일단 문제를 아주 얕잡아 봤다. 그래서 단순히 정렬만으로는 해결할 수 없는 문제라는 것을 알고 좀 더 오랫동안 고민했다. - 입력 범위가 1 ~ 1000000이므로 되게 크기 때문에 단순히 sort를 하고 for문으로 자신보다 작은 것의 개수를 세는 방식으로는 분명히 Time Out 결과가 뜰 것이라고 생각했다. - 입력된 순서대로 출력을 해야하기 때문에, 인덱스 값을 기억해야 했다. 그래서 2차원 리스트를 사용했다. (1) 내가 생각한 풀이 - lst로 입력을 받는다. - lst_premium에 인덱스와 lst의 원소들을 순서대로 2차원 리스트 화해서 저장한다. [ [index, value], [index, value], [index, value].. 2022. 2. 26. [ BOJ 오답노트 ] 15649 파이썬 : N과 M (1) 2022 02 24 1. 틀린 기록 2. 원인 분석 - 일단 어떻게 풀지를 모르겠어서.. 틀렸다. 백트래킹 알고리즘 관련된 문제라는데 백트래킹은 아직 접해보지 못했기 때문에... 하하하 - 그래서 이번 기회로 백트래킹 알고리즘을 배워보고, 정리도 해두었다. https://chunshikkong.tistory.com/36 [ 알고리즘 ] 7. 백트래킹 알고리즘 1. 백트래킹 알고리즘 - 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘 - 해를 찾아가는 도중에 해가 안될 것 같으면 돌아간다. ⓐ 유망하다 (Promising) : 해가 될 가능성이 chunshikkong.tistory.com - 백트래킹은 dfs의 한 종류이기 때문에 깊이 탐색을 잘 이용해서 풀면 되는 문제였다. - 값들을.. 2022. 2. 24. 이전 1 2 3 4 5 6 7 다음