알고리즘 16

[프로그래머스] 전화번호 목록 (python)

코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 👩🏻‍💻 코드 def solution(phone_book): phone_book.sort() for i in range(len(phone_book) - 1): if len(phone_book[i + 1]) >= len(phone_book[i]): if phone_book[i + 1].find(phone_book[i]) == 0: return False return True 📝 정리 오름차순으로 phone_book 정렬 두 개씩 비교하며 앞의 전화번호가 뒤의 ..

[프로그래머스] 스킬트리 (python)

코딩테스트 연습 - 스킬트리 programmers.co.kr 👩🏻‍💻 코드 def solution(skill, skill_trees): answer = 0 for st in skill_trees: idx = 0 flag = True for s in st: if s == skill[idx]: idx += 1 if idx == len(skill): break elif s not in skill: continue else: flag = False break if flag: answer += 1 return answer 📝 정리 효율성 테스트가 존재하지 않기 때문에 일일이 비교하는 방법으로 해결했다. skill_trees 내에 있는 스킬 트리와 skill을 동시에 확인하였다. skill에 존재하는 철자인 경우 ..

[프로그래머스] 카카오프렌즈 컬러링북 (java)

코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 👩🏻‍💻 코드 import java.awt.*; import java.util.*; public class Solution { static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, -1, 0, 1}; static int[][] map; static boolean[][] visited; public int[] solution(int m, int n, int[][] picture) { int numberOfArea = 0;..

[프로그래머스] 멀쩡한 사각형 (python)

코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 👩🏻‍💻 코드 import math def solution(w,h): return w * h - (w + h - math.gcd(w,h)) 📝 정리 직사각형에서 잘리는 부분의 크기가 (가로 + 세로 - 가로와 세로의 최대공약수) 라는 것을 생각하는 것이 다소 어려웠다. 반면 코드는 매우 짧음.. 규칙 찾기란 항상 어려운 것..😅

[프로그래머스] 배달 (python)

코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 👩🏻‍💻 코드 import heapq def solution(N, road, K): answer = 0 graph = [[] for _ in range(N + 1)] distance = [1e9] * (N + 1) for i in range(len(road)): start, end, time = road[i] graph[start].append((end, time)) graph[end].append((start, time)) q = []..

[프로그래머스] 땅따먹기 (python)

코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 👩🏻‍💻 코드 def solution(land): dp = [[0] * 4 for _ in range(len(land))] for i in range(len(land)): for j in range(4): if i == 0: dp[i][j] = land[i][j] else: max_list = dp[i - 1].copy() del max_list[j] dp[i][j] = max(max_list) + land[i][j] return max(dp..