본문 바로가기

728x90

분류 전체보기

(81)
[Programmers] 스킬트리 (Python) 코딩테스트 연습 - 스킬트리 programmers.co.kr 스킬 트리에서 선행 스킬 조건을 제대로 만족한 스킬트리의 개수를 찾는 문제! 오랜만에 게임이 하고 싶어지는 문제였다ㅋㅋ 처음에는 선행 스킬 조건을 Parents 테이블로 찾아야 하나 했는데 생각해보니 단계 순서를 정확하게 따르지 않으면 무조건 틀리기 때문에 그냥 순서를 지켰느냐만 확인하면 되는 문제였다. 1. 각 스킬 레벨 정리 주어진 선행 스킬 순서대로 딕셔너리 형태로 0, 1, 2, ... 순으로 레벨을 매겨주었다. 2. 각 스킬 트리하나씩 살펴보며 선행 스킬 지켰는가 확인 i) 만약 선행스킬이 없는 스킬이라면 순서가 상관없으니 확인할 필요가 없음 ii) 선행 스킬이 있다면(스킬 딕셔너리에 존재한다면) 내가 현재 배울 수 있는 스킬인지 확인..
[Programmers] 피로도 (Python) 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 던전의 개수가 8개밖에 되지 않아 permutations로 간단하게 풀었다. from itertools import permutations def solution(k, dungeons): answer = -1 n = len(dungeons) # 던전 갯수 for perm in list(permutations(range(0, n), n)) : cnt = 0 now_k = k for i in perm : if now_k >= dungeons[i][0] : n..
[Programmers] 124 나라의 숫자 (Python) 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 1, 2, 4만 있는 나라에서 10진수를 어떻게 표현할 수 있는가? 라는 문제! 처음 딱 봤을 때 3진법으로 나타내고 0, 1, 2를 각각 매칭해주면 되겠네! 라고 간단하게 생각했다. 그러나 풀어서 생각해보니 0의 경우 단독으로 맨 앞자리에 올 수 없으므로 단순 매칭으로는 해결할 수 없다는 문제가 있었다! 숫자를 다 나열해서 비교해보며 찾아낸 규칙은 1. 3으로 나누어 떨어지지 않으면 3진법으로 나타낸 수를 그대로 사용하고 2. 3으로 나누어 떨어지는 경우 4를 대신 넣어주고, n // 3 -1 에서 이어서 계산을 해주면 된다. 이렇게 두 가지였다! 이러한 규칙만 찾아내면 간단하고, 입력으로 주어지는 숫자가 아무리 커도 시간 효율성도..
[Programmers] 2019 KAKAO BLIND RECRUITMENT - 후보키 (Python) 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 데이터베이스에서 사용할 수 있는 후보키의 개수를 구하는 문제! 효율적으로 보이지는 않지만 후보키의 개수가 많이 않기 때문에 combinations을 사용해서 구해도 충분히 시간안에 해결 가능한 문제였다! from itertools import combinations def solution(relation): answer = 0 n = len..
[Programmers] 방문 길이 (Python) 코딩테스트 연습 - 방문 길이 programmers.co.kr 처음에는 매 칸의 상하좌우로 방문한 곳을 다 저장해야하나 하고 생각해서 매우 어렵게 접근했었다..🥲 하지만 뮤.뮤가 매우 간단한 아이디어를 제공해줬다!! 이 문제의 핵심은 바로 "선을 어떻게 표현할 수 있는가?" 이다! 이 문제에서 선은 어떻게 만들어지는가! 바로 점과 점이 만나서 선이 만들어진다. 즉, (출발점, 도착점) 정보가 바로 선에 대한 정보인것! 따라서 (출발점, 도착점) 정보가 총 중복 없이 몇 개 있느냐가 정답이된다! 나같은 경우 (출발점) : [(도착점)]을 저장하는 딕셔너리를 만드는 방식으로 구현했다. 이때 (출발점, 도착점)과 (도착점, 출발점)은 동일한 선이므로 각각 딕셔너리에 저장한 후 마지막에 2로 나누어 주어야 한다..
[BOJ] 1261. 알고스팟 (Python) 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 오랜만에 푸는 벽 부수기 문제! 코테 준비를 하면서 제일 처음 벽 부수기 문제를 만났을 때는 머리 터지겠다.. 했는데 그래도 여러 BFS 문제를 풀어봐서인지 비교적 쉽게 풀 수 있었다! BFS의 대표 유형과 비슷한데 알고스팟에서 유의해야할 점은 "이미 지나간 곳이지만 더 적은 횟수로 벽을 부수고 지나갈 수 있는가?"라는 점이다! 더 적은 횟수로 벽을 부수고 지나갈 수 있다면 이미 방문한 곳이라도 다시 재방문을 해주어야 한다. 따라서 일반적으..
[2022 KAKAO BLIND RECRUITMENT] 양궁대회 (Python) 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 2022 카카오 공채.. 마지막 컬쳐핏 면접에서 떨어져서 정말 눈물을 흘렸던 바로 그 공채.. 오랜만에 그때 풀었던 풀이를 다시 살펴봤다. n의 제한이 10개밖에 되지 않아서 combination을 사용하여 간단하게 풀었고 무난하게 통과했다. from itertools import combinations_with_replacement as cwr from collections import Counter def solution(n, info) : answer = [] ..
[Programmers] 힙(Heap) - 이중우선순위큐 (Python) 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 오랜만에 기초 문제 다시 풀기! heap 자료구조를 사용한 문제풀이는 정말 오랜만이라서 heapq 라이브러리의 간단한 사용법을 정리할겸 써본다. 파이썬에서는 내장 라이브러리로 heapq라는 기능을 제공하기 때문에 heap 문제를 매우 간단하게 풀 수 있다. 우선 heap을 사용해서 풀 때 유용한 유형은 "최댓값/최솟값을 반복적으로 리턴해야할 때"이다! 사용법은 간단하다. import heapq heap = [] # 그냥 리스트로 힙을 만들어준다 heapq.heappush(heap, 1) heapq.heappop(heap)​ 그냥 리스트로 힙을 만들어준 후 heapq라이브러리를 사용하여 값을 넣고, 빼주면 된다는 것! 만약 풀고자하는 문제가..

728x90