[백준] 17266: 어두운 굴다리 (파이썬, 이분 탐색)
·
코딩테스트/BOJ
https://www.acmicpc.net/problem/17266▶ 구해야하는 것N 길이의 굴다리에 M개의 가로등으로 전체 굴다리를 비춘다.가리기 위해서는 H 높이의 가로등이 좌우로 H만큼 비추고 있다.이 때 설치해야할 가로등의 최소 높이를 구하는 거다. ▶ 풀이 탐색O(M): 가로등마다 다 비출 수 있는지 확인O(N): 가로등의 높이 탐O(NM): 시간 복잡도가 소요됨. 약 10만^개의 연산이 필요해 시간 안에 불가능하다. -> 이분 탐색을 이용해야한다.O(log N): 가로등의 높이를 이분 탐색한다.O(M): 각 가로등마다 다 비출 수 있는지 확인한다.총 O(MlogN)의 시간 복잡도가 소요된다.1. 이분 탐색으로 가능한 최소 높이 찾기- 규칙: 가로등의 높이가 높아지면 비출 수 있는 거리가 길어지..
[백준] 2839번: 설탕 배달 (파이썬)
·
코딩테스트/BOJ
https://www.acmicpc.net/problem/2839 ▶ 문제 탐색하기전체 설탕의 양인 N을 3a + 5b 로 풀어내어서 (a+b)의 최솟값을 구하는 문제로 생각했다. 몫이 상대적으로 작은 a값을 중심으로 이중 for문을 이용해서 풀었다.  이중 for 문(아래)을 사용해 푼 문제가 while~else로 푼 문제(위)보다 시간이 엄청 오래걸렸다. O(nm) 시간 복잡도가 크긴 하다. ▶ 정답 코드 (이중 for 문)N = int(input())a = N // 5 # 5의 최대 몫b = N // 3 # 3의 최대 몫w = [] # 5a + 3b = 15가 가능한 (a+b)의 배열for i in range(a+1): for j in range(b+1): ..
[백준] 4963번: 섬의 개수
·
코딩테스트/BOJ
https://www.acmicpc.net/problem/4963난이도: 실버2 ▶ 문제 탐색하기 알고리즘 선택- BFS 알고리즘 사용- DFS 알고리즘도 사용 가능하다▶ 코드 설계하기 ▶ 회차별 수정사항문제 조건에 대각선도 걸어갈 수 있는 조건이 있었다. 그렇면 dx, dy 좌표 정해주기▶ 정답 코드import syssys.setrecursionlimit(10 ** 4) #재귀쓸 때 널기d=[(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1)] #하부터 시계반대방향으로 순회, 하 대각선 우 대각선 상 대각선 좌 대각선def dfs(x, y): arr[x][y]=0 for i in range(8): nx = x + d[i][0] ..
[백준] 1326번: 폴짝폴짝
·
코딩테스트/BOJ
https://www.acmicpc.net/problem/1326난이도: 실버2▶ 문제 탐색하기재귀함수를 이용해서 최소한 점프할 수 있는 방법을 탐색한다.  ◇ 입력징검다리 개수 N (1~10,000 정수)N개의 징검다리에 쓰여진 자연수 ---> arr =[]시작 a번째 징검다리, 도착 b번째 징검다리 ◇ 원하는 출력 조건 a번 징검다리에서 b번 징검다리로 최소 몇 번 점프해서 갈 수 있는지? 만약 갈 수 없다면 -1 출력  가능한 시간복잡도  알고리즘 선택- BFS 알고리즘 사▶ 코드 설계하기 1. 가장 먼저, arr[ a-1 ] 시작점 값과 뛰어야하는 전체 거리 ( b-a )를 찾는다.   2. 만약 전체 거리가 시작점 값으로 나누어 떨어진다면 한 번에 뛰어 건널 수 있다.①  if (b-a) % a..
[백준] 5585번: 거스름돈
·
코딩테스트/BOJ
https://www.acmicpc.net/problem/5585난이도: ▶ 문제 탐색하기가로, 세로, 대각선으로 그을 수 있는 직선은 총 12개이다. 이중에서 3개를 택하는 조합은 12C3=220가지 이므로 경우의 수가 많지 않다. ◇ 입력 5X5의 빙고판을 입력받은 후, 2차원 배열로 저장한다. 사회자가 부르는 수를 1차원 배열로 저장한다. ◇ 원하는 출력 조건 1차원 배열에서 5개의 칸이 3번 채워지는 그 순간의 index+1을 출력한다.▶ 코드 설계하기 1. 위치 탐색: 사회자가 부르는 숫자가 2차원 배열의 어디에 위치해있는지 찾는다. 2. 해당 숫자의 index를 저장한다. Q. 이차원배열로 저장할지[[ i, j ], [ i1, j2] ,..].., dict의 형태로 {''row'':col, "..