Algorithm/Python

[프로그래머스 LV2]이진 변환 반복, 영어 끝말잇기

박한결 2021. 3. 9. 00:27

문제 - programmers.co.kr/learn/courses/30/lessons/70129?language=python3

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

import re

def solution(s):
    count, num_zero = 0, 0
    while 1:
        tmp = len(re.sub('[0]', '', s))
        num_zero += len(s)-tmp
        s = format(tmp, 'b')
        count += 1
        if s == '1':
            break
    return [count, num_zero]

regular expression과 format 을 사용하면 간단하게 풀 수 있는 문제였다. 

 

문제 - programmers.co.kr/learn/courses/30/lessons/12981?language=python3

 

코딩테스트 연습 - 영어 끝말잇기

3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0]

programmers.co.kr

import collections

def solution(n, words):
    info = collections.defaultdict(list)
    for i in range(len(words)):
        info[i%n+1].append(words[i])
    for i in range(1, len(words)):
        if words[i][0] != words[i-1][-1] or words[i] in words[:i]:
            return [i%n+1, info[i%n+1].index(words[i])+1]
    return [0, 0]

defaultdict를 사용하면 [ 번호, 차례 ]를 빠르게 가져올 수 있는 문제였다.

 

 

아, 그리고 오늘 프로그래머스 스킬 체크에서 드디어 Lv2가 됐다! Lv2 문제를 다 풀고나서 스킬 체크를 해보려고 했는데 혹시나 하고 해봤더니 생각보다 쉬워서 금방 할 수 있었다.

예전에 Lv 1 스킬 체크 

Lv 1 스킬체크는 무려 6달 전에 했었는데, 당시 나는 Lv 1 스킬 체크를 푸는데도 시간이 오래 걸렸고(겨우 겨우 풀었고) Lv 2는 통과하지 못했다ㅎㅎ..

 

오늘 Lv 2 스킬 체크

 하지만 오늘은 거의 망설임 없이 Lv 2 스킬 체크 문제를 풀었고 성공했다! 

 

실패가 두려워서 도전을 하지 않으면, 그저 가능성이 있는 나로 남아있고 싶어서 아무것도 되지 못하게 된다는 것을 다시 한번 깨닫게 되는 날이었다!