프로그래머스: 위장 Level2 문제링크 코딩테스트 연습 - 위장 programmers.co.kr 나의 접근 딕셔너리에 각 key가 등장할 때 마다 값을 increment 해준다. 일반 딕셔너리로는 key가 존재하지 않는 경우에 대해 새로운 key를 추가해주고, 존재하는 경우에 대해 +1 시켜줘야한다. Defaultdict를 사용하면 이러한 예외처리를 해주지 않아도 된다. 딕셔너리에서 각 key의 count수에 대한 경우의 수를 곱해준다. 전체 count에서 아무것도 안입은 경우 하나를 빼준다. from collections import defaultdict #1 def solution(clothes): wardrobe = defaultdict(int) for i in clothes: key = i[1]..
프로그래머스 가장 큰수 - Level 2 문제링크 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 나의 접근 첫 시도: 시간 초과 numbers의 integer들을 string으로 타입 캐스팅 해준 후, digit 별로 나누어 2d array에 저장한다. numbers안의 원소에 들어갈 수 있는 최대 숫자가 1000, 즉 4자릿수이기 때문에 4번 iterate 해주며 리스트를 정렬한다 정렬한 리스트의 각 numbers를 합친다. 합친 number..
백준 10844 쉬운 계단 수 Silver I 문제링크 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 나의 접근 DFS 로직으로 가장 뒷자리의 숫자에 +1, -1 한 경우에 대해 깊이우선 탐색을 진행해주고 N의 길이까지 탐색을 완료하면 count를 더 해주는 식으로 구현해봤는데.. 시간초과가 났다. 아래는 해당 코드다. import sys def dfs(startnum, idx): global count change = [1, -1] if idx == N - 1: count += 1 return count for calc in range(2): newnum = startnum + change[calc] #2 if 0