[백준] 18808번 스티커 붙이기 _ Python
·
Algorithms/Simulation
[초기 접근 방법] 스티커를 이동하면서 붙일 수 있는지 check 모든 구역에 붙일 수 없다면, 스티커를 회전 4번 회전했는데도 못 붙이는 경우는, 다음 스티커를 판단한다. [생각] 1. 회전(rotate)를 코드로 어떻게 표현할 지에 대해서 고민했던 문제 rotateSticker[j][row - 1 - i] = sticker[i][j] 90도 회전한 스티커의 '행' 좌표는, 기존 스티커의 '열' 좌표가 된다. '열' 좌표는 '행' 좌표의 대칭점이 된다. 2. 스티커를 이동하는데 투포인터로 풀어야 되는지 알고 흠칫했다는.. [코드] # 풀이 시간 : 1시간 30분 # 시간복잡도 : O(4*s^2*n^2) / s:스티커, n:노트북 # 공간복잡도 : O(n^2) # 참고 : - import sys inpu..
[백준] 1548번 부분 삼각 수열 _ Python
·
Algorithms/Brute Fource
[초기 접근 방법] core : 제일 작은 2개가, 제일 큰 것보다 커야 함 1. 그러면 제일 작은 2개의 숫자를 먼저 선택하자. (연속된 수) 2. 삼각형 조건을 만족하는 수를 count [생각] 맞았다! 그런데 더 효율적으로 풀 수 있었다!! 기준이 되는 start 인덱스와, end(=start+2)를 매개변수로 던져준다. 그리고 함수 내에서 end 인덱스부터 탐색을 하면서 end+=1 로 범위를 넓혀주며 카운트를 한다. 기존 코드와 개선된 코드 모두 첨부하겠다 [기존 코드] # 풀이 시간 : 1시간 # 시간복잡도 : O(n^2) # 공간복잡도 : O(n) # 참고 : - # core : 제일 작은 2개가, 제일 큰 것보다 커야 함 # 1. 그러면 제일 작은 2개의 숫자를 먼저 선택하자. (연속된 수..
[백준] 22944번 죽음의 비 _ Python
·
Algorithms/Brute Fource
[초기 접근 방법] 현재 위치에서 골로 이동할 수 있는지 판단한다. 현재 거리와 가장 가까운 우산 u를 찾아 이동한다. 1~2 과정을 반복한다. [틀린 이유] 가장 가까운 우산으로 가는 것이 효율적이 아니다(?) [생각] bfs 문제라고 생각하지 못했다. 접근 방법이 틀린 것 같아서, 풀이를 검색하다 bfs 키워드만 보고 곰곰히 생각하다가 bfs로 다시 풀어보았다. visited[i][j] = Boolean 으로 코드를 제출했는데 '틀렸습니다.' "왜? 최소 경로는 bfs 맞는데??" 하고 다른 블로그를 찾아 들어가 정독해봤더니 visited[i][j]에 '남은 체력'을 저장하고 풀었어야 했다. "맞다. bfs이므로 한쪽이 우선으로 탐색되어, 우산을 사용하는 효율적인 경로를 찾지 못한다!" visited..
[백준] 12919번 A와 B 2 _ Python
·
Algorithms/Brute Fource
[초기 접근 방법] - 처음에 A-B를 추가하면서 start를 end로 만드는 방법으로 풀었다. - 풀면서, 최대 시간복잡도가 O(2^50)인데 시간초과 나지 않을까? → 역시 시간초과 - 정답은 start를 end로 바꾸는 것이 아니라, end를 start로 바꾼다. - 이는 end의 상태에 따라, 2가지 방식을 적용할 수 있다. ex. end가 A로만 이루어져 있다면, B를 추가하는 연산을 사용하지 않는다. [생각] - A-B를 실제로 제거하고 뒤집는 e를 재귀 돌리는 것이 아니라, 백트래킹이 될 수 있도록 제거를 가정한 e를 재귀해야 한다. (10분동안 가만히 고민함) [코드] # 풀이 시간 : 15+40분 # 시간복잡도 : - # 공간복잡도 : O(n) # 참고 : https://bio-info...
[백준] 14620번 꽃길 _ Python
·
Algorithms/Brute Fource
[초기 접근 방법] - 처음에 '꽃들의 거리 > 2'를 생각하며 기하적으로 접근했다. 삼각형의 모든 변의 길이가 2 이상.. (오히려 더 복잡함) [생각] 1. 오랜만에 풀어보는 완전 탐색 문제. 생각보다 오래 걸렸다.. 2. 첫 코드에서 통과했지만 난잡하게 작성했던 코드를, 아래 블로그를 보면서 리팩토링을 했다. [코드] # 풀이 시간 : 1시간 30분 # 시간복잡도 : O(n^3) # 공간복잡도 : O(n^2) # 참고 : https://amor-fati.tistory.com/120 import sys input = sys.stdin.readline # 인근 5평 대여 비용 구하기 def calFive(): for i in range(1, N - 1): for j in range(1, N - 1): ..
블로그 이전
·
Algorithms/Brute Fource
https://wch-m.tistory.com/