Algorithm(71)
-
프로그래머스 [바탕화면 정리]
풀이 문제가 길어서 읽기 귀찮았지만 끝까지 읽었다. 시작점의 x, y는 행, 열에서 가장 작은 수를 넣으면 되고 끝점의 x, y도 행, 열에서 가장 큰 수에 1을 더하면 된다. def solution(wallpaper): r = len(wallpaper) c = len(wallpaper[0]) answer = [r, c, 0, 0] for i in range(r): for j in range(c): if wallpaper[i][j] == '#': if i answer[2]: answer[2] = i if j answer[3]: answer[3] = j answer[2] += 1 ans..
2024.03.28 -
프로그래머스 [배달]
풀이 최단 경로를 찾아내는 코드를 작성했다. 다익스트라 알고리즘을 사용하면 되는 거 같아서 다익스트라에 대한 기억을 끄집어내려고 했는데 유튜브 선생님들의 강의로는 뭔지 잘 모르겠어서 bfs에서 살짝 변형한 정도로 생각나는 대로 작성했다. 장염에 걸린 걸 변명삼아 나중에 비슷한 문제를 마주하면 다시 알아봐야겠다. import heapq def solution(N, road, K): answer = 0 graph = [[] for _ in range(N+1)] distance = [500001]*(N+1) for r in road: graph[r[0]].append((r[1], r[2])) graph[r[1]].append((r[0], r[2])) queue = [] heapq.heappush(queue, ..
2024.03.27 -
프로그래머스 [최댓값과 최솟값]
풀이 min(), max()가 나을지 sort가 나을지 고민됐다. 둘 다 해봤더니 min(), max()가 조금 더 빨랐다. def solution(s): answer = '' li = sorted(list(map(int, s.split()))) answer += str(li[0]) answer += ' ' + str(li[-1]) return answer def solution(s): answer = '' li = list(map(int, s.split())) answer += str(min(li)) answer += ' ' + str(max(li)) return answer
2024.03.27 -
프로그래머스 [정수 제곱근 판별]
풀이 제곱근(루트) : n**(1/2) 소숫점 값이 없는 정수인지 판별 : float(m).is_integer() def solution(n): answer = 0 m = n**(1/2) if float(m).is_integer(): answer = (m+1)**2 else: answer = -1 return answer
2024.03.27 -
프로그래머스 달리기 경주
풀이 시간 초과. 아무래도 call마다 rank를 전부 검사하는 게 오래 걸린 요인인 듯하다. def solution(players, callings): n = len(players) answer = [''] * n rank = dict() for i in range(n): rank[players[i]] = i for call in callings: rank[call] -= 1 change = rank[call] for name in rank.keys(): if rank[name] == rank[call] and name != call: rank[name] += 1 for r in rank.items(): answer[r[1]] = r[0] return answer 그래서 간단히 바꿔봤는데 또 시간 초과..
2024.03.26 -
백준 15989 풀이
문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 1+3 (3+1) 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 10,000보다 작거나 같다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 풀이 본격적으로 백준 문제를 풀며 접한 첫 DP 문제다. 점화식을 찾는 게 정말 어렵다. ..
2024.03.25