본문 바로가기

코딩테스트

(30)
[LV1] 크레인 인형뽑기 Python https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr def solution(board, moves): # 인형을 담을 스택 stack = [] answer = 0 # 1. move 안의 좌표를 check한다. for m in moves: pick = 0 # 2. board를 위에서부터 한 "행씩" 하나씩 체크한다. for r in board: # 3. move 안의 좌표는 열을 나타낸다. 0이 아니면 인형이 있는 것이므로 선택한다. if ..
프로그래머스 DFS/BFS 네트워크 Python 풀이 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 | 프로그래머스 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크 programmers.co.kr def solution(n:int, computers:list)-> int..
프로그래머스 DFS/BFS 타겟 넘버 python 풀이 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 | 프로그래머스 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘 programmers.co.kr 이 문제는... 다른 사람의 풀이 중에... 재귀적으로 멋지게 푼 풀이가..
프로그래머스 그래프 순위 python 문제풀이 https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 | 프로그래머스 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr from collections import defaultdict def solution(n:int,results:list)->int: # 정확하게 순위를 매길 수 있는 선수들의 수를 구한다. # 한 선수가 다른 선수와 경쟁했을 때, 이기고 진 횟수의 합이 정확하게 n-1번 이라면 이 선수의 순위를 알 수 있다 # 먼저 results의 결과를 통해 결과를 만든다. # 그 후 results의 결과를 통해 유추할 수 있는 결과를 갱신한다 answer=0 wi..
Programmers 코딩테스트 연습 위장 목록 Python 정답. 이 문제는 간단하게 조합!을 찾는 문제이다. defaultdic같은 녀석을 쓰면 더 쉽게 풀 수 있지만, 단순히 key값을 세어 dictionary로 만든 후, 결과값들을 곱하는 식으로 구현하였다. answer에 val+1 해주는 것은 1은 해당 종류 입지 않았을 때. 마지막에 -1 해주는 것은 공집합 제거해 주는 것 시간복잡도는 hashmap을 내부적으로 이용하므로 logn으로 매우매우 효율적 def solution(clothes): dic = {} answer = 1; for i in clothes: if i[1] not in list(dic.keys()): dic[i[1]] = 1 else : dic[i[1]] = 1+ dic[str(i[1])] for val in dic.values(): answ..
[Hash] 프로그래머스 코딩테스트 연습문제 Hash 3번 위장 JAVA 풀이 import java.util.HashMap; class Solution { public int solution(String[][] clothes) { HashMap map = new HashMap(); int answer = 1; for(int i = 0 ; i < clothes.length;i++) map.put(clothes[i][1],map.getOrDefault(clothes[i][1],0)+1); for (int i: map.values()) answer*=(i+1); return answer-1; //하나도 안입은 경우 제외 } } 해시맵의 특성인 1. 키는 중복 불가 2. keySet(), values() 등을 통해 배열을 구하는 매소드가 존재 함을 이용하면 매우 쉽게 풀 수 있는 문제였다..