본문 바로가기

전체 글11

[미해결][12976] 돌 옮기기 - python 코드 알고리즘 설계 기법 모르겠음. 없는 듯 런타임 에러났다.. 지금 작성한 코드는 답이 나오긴 하는 것 같은데, 코드를 써놓고 딱 봐도 시간 엄청 걸리게 생겼다. 코드 N = int(input()) a = list(map(int, input().split())) b = list(map(int, input().split())) def find(a, b): if sum(a) != sum(b): return -1 else: arr = [] result = 0 for i in range(N): arr.append(a[i]-b[i]) #음수: 부족한 양 양수:넘치는 양 for i in range(N): if arr[i] < 0: x = y = i while arr[i] != 0: while (arr[x] 0: res.. 2022. 3. 23.
[3029] 경고 - python 풀이 알고리즘 설계 기법 없음 시, 분, 초 단위로 각각 따져서 시간 차이 계산하면 된다. 단, 60초가 되면 분 단위에 영향을 미치고, 60분이 되면 시 단위에 영향을 미치므로 초, 분, 시 순서로 계산해야 한다. 그리고 문제에서 마음에 안 드는 건 24:00:00 조건. 00:00:00시에서 00:00:00시까지 대기 시간은 24시간이 아니라 그냥 대기를 안 하면 되는 거 아니냐고... 아무튼 입력 두 개가 같은 경우에는 24시간을 기다려야 하므로 그 조건은 따로 따져줬다. 답 A = list(map(int, input().split(':'))) B = list(map(int, input().split(':'))) if A[2] > B[2]: S = 60-A[2]+B[2] A[1] += 1 else:S =.. 2022. 3. 22.
[3028] 창영마을 - python 풀이 알고리즘 설계 기법 선형 탐색 이틀전에 풀었는데... 어제 선택된 백준 문제가 어려워서 그거 푸느라 글을 못 썼다 아무튼 이번 문제는 쉬워서 세트문제로 두 개 풀었다. 3028번 문제는 야바위했을 때 공 위치 찾는 코드 짜는거였다. 1) 공 위치가 어디에 있는지 2) 어느 컵을 옮기는지 만 신경쓰면 풀 수 있다 답 N = list(input()) ball = 1 for i in N: if i == 'A': if ball == 1: ball = 2 elif ball == 2 : ball = 1 elif i == 'B': if ball == 2: ball = 3 elif ball == 3 : ball = 2 else: if ball == 1: ball = 3 elif ball == 3 : ball = 1 p.. 2022. 3. 22.
[12887] 경로 게임 - python 풀이 알고리즘 설계 기법 Backtracking 이번 문제의 경우 1)경로는 반드시 존재하고 2)행의 개수는 항상 2라는 조건 덕분에 문제가 까다롭지 않았다. [0][i] 가 '#'이면 무조건 [1][i]는 '.'일 것이기 때문에, 푸는 방법 자체는 백트레킹이었음에도 불구하고 방문 표시를 하지 않고 지나가도 괜찮다. 바꿔도 무방한, 즉 최단경로에 속하지 않는 '.'의 개수를 구하는 것이 문제였으므로 전체에서 (최단경로+'#'개수)를 빼면 답을 구할 수 있다. → M*2 - (거쳐간 '.'개수 + '#'개수) 여기서 놓치면 안되는 부분! 출발 위치는 [0][0] 과 [1][0] 두 개다. 난 이걸 놓쳐서 자꾸 애먹었다... 만약 입력으로 5 .#... ..... 가 들어온다면[0][0]에서 출발할 경우 → 출력.. 2022. 3. 19.
[14501] 퇴사 - python 풀이 알고리즘 설계 기법 Dynamic Programming 중복 호출을 해결하기 위해 메모리에 결과값을 저장하고, 다음 호출 때 해당 값을 사용(배열 사용) 경우가 무지무지 많으면서도 조건에 부합하는지 살펴야 한다. 0) n일에 예약된 상담을 할지 말지 따지면서도, 상담을 진행할 경우 1) 퇴사 전에 상담이 마무리되어야 하고 2) 해당 상담을 진행하는 동안 다른 상담은 진행할 수 없으므로, 이전에 진행중인 상담이 있었는지 확인해야 한다. 나는 2번 조건이 너무 까다로워서 애를 먹었는데, 이걸 해결하는 방법은 스케줄을 뒤에서부터 잡는 것이다. 뒤에서부터 일정을 잡을 경우, 앞 날에는 일정이 없으므로 2번 조건을 따지지 않아도 되는 것이다. 앞에서부터 일정 잡느라 끙끙댄 사람 접니다 문제를 보면 1일 2일 3일.. 2022. 3. 18.