목록Algorithm/Programmers (76)
S E P H ' S

코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 풀이 1. 10진수를 n진수로 변환하는 재귀함수 구현 def convert(n, base): arr = "0123456789ABCDEF" q, r = divmod(n, base) if q == 0: return arr[r] else: return convert(n, base) + arr[r] 2. 미리 구할 숫자의 개수 t , 게임에 참가하는 인원 m t*m 까지의 숫자들을 convert하고 후보 리스트에 넣는다. 3. 인덱스가 0부터 이므로 p..

코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 풀이 1. 스택 원리로 풀이. 2. 첫 괄호가 ')'이라면 바로 False 3. 반복문을 돌면서 '(' 이라면 list에 append. 4. 만일 ')'이라면 먼저, 리스트가 비었는지 먼저 체크하고 비었다면 False를 반환한다. -> ex) (())) 과 같은 경우 ')'을 처리하는 부분에서 빈 값에서 pop을 해서 에러가 났었다. 5. 그렇지 않다면 list.pop()을 사용하여 먼저 들어가 있는 '('을 처리 d..

코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr 풀이 1. bin()을 활용하여 '1'의 개수를 count 2. for문으로 1씩 증가하며 그 수를 2진수로 변환하여 '1'의 개수를 세고 같으면 그 수를 리턴. def sol(n): c = bin(n).count('1') for next_n in range(n+1, 100001): if bin(next_n).count('1') == c: return next_n
코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 풀이 1. brown + yellow = 카펫의 넓이 ( x * y ) 2. brown은 최소 8 -> 가로나, 세로 최솟값은 3. (brown이 테두리이기 때문에) 3. brown이 테두리라는 것에 의해 yellow는 (x-2) * (y-2)가 성립 4. 넓이에서 임의의 변수를 나눠서 나머지가 0인 값과 넓이에서 그 변수를 나눠서 나온 몫이 각각 가로, 세로이다. def solution(brown, yellow): hap = brown, yellow for..