본문 바로가기

B

(32)
[코딩테스트 연습] - 124 나라의 숫자 https://programmers.co.kr/learn/courses/30/lessons/12899?language=python3 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr def solution(n): answer = '' rest = n%3 k = n//3 if n0: rest = k%3 k = k//3 if rest==0: rest = 4 answer = str(rest) + answer if k==1: break return answer # 나머지가 1이면 1 2면 2 0이면 4 주면 됌 몫을 계속 나눠주면서 나머지만 쏙쏙 빼먹는 구조 def solution(n): answer = '' while n>0: n -= 1 answer = '124'[n%3] + answe..
[프로그래머스] DFS/BFS - 단어 변환 https://programmers.co.kr/learn/courses/30/lessons/43163?language=python3 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr def solution(begin, target, words): visited = [False] * len(words) from collections import deque queue = deque([begin]) for same_apb in range(0,len(begin),-1): no..
[코딩테스트] 완전탐색 - 모의고사 / 카펫 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 무식해 보여도 사실은 최고의 방법일 때가 있지요. def solution(answers): pattern1 = [1,2,3,4,5] pattern2 = [2,1,2,3,2,4,2,5] pattern3 = [3,3,1,1,2,2,4,4,5,5] score = [0, 0, 0] result = [] for idx, answer in enumerate(answers)..
[코딩테스트] 완전탐색 - 소수 찾기 https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr [ 내 풀이 ] # 소수판별함수 from itertools import permutations def check(num): if num
[프로그래머스] 정렬 - 가장 큰 수 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr [내 풀이] def solution(numbers): from itertools import permutations as pmt temp = list(pmt(numbers, len(numbers))) li = ["".join(map(str,i)) for i in temp] return max(li) 완전 탐색. permutation의 조합툴을 활용해 모든 경우의 수를 리스트에 담아주고, 그 중 가장..
BFS/DFS def BFS(graph, start_node): from collections import deque visited = {} queue = deque([]) queue.append(start_node) while queue: node = queue.popleft() visited[node] = True queue.extend(graph[node]) return list(visited.keys()) graph가 list형태로 주어지고 BFS알고리즘으로 방문노드를 뽑아낸다. 특히 방문노드는 딕셔너리나 SET으로 추가해주는 것과, list의 pop(0)보다 deque를 이용하여 popleft를 이용하는것이 시간복잡도 측면에서 이득을 볼 수 있다. visited = [False] * 10 graph = [[]..
[프로그래머스] 힙(Heap) 관련 문제 정리 (python 구현) [힙은 곧 우선순위큐다] 힙은 이진트리 기반의 알고리즘으로 특히, 우선순위큐를 구현하는데 힙을 이용하면 쉽게 구현할 수 있다. 현재 많은 기업이 진행하는 코딩테스트에서 우선순위 큐를 구현하는 문제는 출제빈도가 굉장히 높다. 파이썬에서는 heapq, 자바에서도 자주 쓰이던 PriorityQueue를 모듈로 제공해서 이를 이용하면 최소 힙을 간단하게 구현해낼 수 있다. Lv.2 더 맵게 [문제 설명] 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 ..
[프로그래머스] 스킬트리 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요. 제한 조건 ..
[이코테 2021] 그리디 & 구현 알고리즘 문제는 결국 문제해결능력을 물어보는 것이다. 무작정 코딩하려 하지 말고, 주어진 문제의 "상황"을 이해하고, 그 문제를 어떻게 컴퓨터 언어를 통해서 풀어낼 것인가를 곰곰히 생각해보는 것이 중요하다. 이때, 당연히 알고리즘 종류에 대해서 정확히 이해해서 어떻게 적용시킬수 있을까를 생각하는 것과, 적절한 자료구조를 이용해서 풀어내는 것이 중요할 것. 창의적인 풀이도 좋지만 어느정도 정석적인 풀이로 접근하는 것이 좋아보인다 ( 이것이 꼭 코테가 천재들만 할 수 있는 영역이 아닌 이유) [그리디 문제 풀이] 처음에는 아래와 같이 풀었다. def solution(li): key = list(Counter(li).keys()) value = list(Counter(li).values()) cnt = 0 d..