나의 풀이

def solution(new_id):
    alphabet = [chr(i) for i in range(ord('a'), ord('z') + 1)]
    numbers = [str(i) for i in range(10)]
    validation = alphabet + numbers + ['-', '_', '.']

    # level 1, 2
    for i, j in enumerate(new_id):
        if j.isupper():
            new_id = new_id.replace(j, j.lower())

        if j not in validation:
            new_id = new_id.replace(j, '')
    print("level 1, 2", new_id)

    # level 3
    new_id = [i for i in new_id]
    for i in range(len(new_id) - 1):
        if new_id[i] == '.':
            if new_id[i + 1] == '.':
                new_id[i] = ''
    print("level 3 ", "".join(map(str, new_id)))

    # level 4
    new_id = "".join(map(str, new_id))
    new_id = [i for i in new_id]
    while True:
        if new_id[0] == '.':
            new_id[0] = ''
            continue

        if new_id[-1] == '.':
            new_id[-1] = ''
            continue
        break
    new_id = "".join(map(str, new_id))
    print("level 4 ", new_id)

    # level 5
    if not any(new_id):
        new_id = 'a'
    print("level 5 ", new_id)

    # level 6
    new_id = [i for i in new_id]
    if len(new_id) >= 16:
        new_id = new_id[:15]
        while True:
            if new_id[-1] == '.':
                new_id[-1] = ''
                continue
            break
    new_id = "".join(map(str, new_id))
    print("level 6 ", new_id)

    # level 7
    if len(new_id) <= 2:
        new_id = new_id + new_id[-1] * (3 - len(new_id))
    print("level 7", new_id)

    return new_id

 

배울만한 코드

def solution(new_id):
    answer = ""
    
    # level 1
    new_id = new_id.lower()
    
    # level 2
    for i in new_id:
        if i.isalpha() or i.isdigit() or i in ['-', '_', '.']:
            answer += i
        
    # level 3
    while '..' in answer:
        answer = answer.replace('..', '.')
    
    # level 4
    if answer[0] == '.':
        answer = answer[1:] if len(answer) > 1 else '.'
    if answer[-1] == '.':
        answer = answer[:-1]
    
    # level 5
    if answer == "":
        answer = 'a'

    # level 6
    if len(answer) > 15:
        answer = answer[:15]
        if answer[-1] == '.':
            answer = answer[:-1]
    
    # level 7
    while len(answer) < 3:
        answer += answer[-1]
    
    return answer

 

정말 모든면에서 나보다 완벽한 코드라 보면서 머리가 멍한 기분이 들었다.

isalpha(), isdigit(), while '..' in answer:, .... 많은 성장을 할 수 있는 답안이었다.

나의 답안

def solution(dartResult):
    answer = []
    cur = 0
    i = 0

    while i < len(dartResult):
        if dartResult[i].isdigit():
            answer.append(cur)
            if dartResult[i + 1].isdigit():
                cur = 10
                i += 2
                continue
            cur = int(dartResult[i])

        elif dartResult[i] == 'D':
            cur = cur ** 2

        elif dartResult[i] == 'T':
            cur = cur ** 3

        if dartResult[i] == '*':
            if any(answer):
                answer[-1] *= 2
            cur *= 2

        elif dartResult[i] == '#':
            cur *= -1

        i += 1

    answer.append(cur)
    return sum(answer)

나의 답안

def solution(N, stages):
    answer = {}
    n = len(stages)
    
    for i in range(1, N + 1):
        if n != 0:
            cnt = stages.count(i)
            answer[i] = cnt / n
            n -= cnt
        else:
            answer[i] = 0

    return sorted(answer, key=lambda x: answer[x], reverse=True)

 

나의 풀이

def solution(n, arr1, arr2):
    a = [arr1[i] | arr2[i] for i in range(n)]
    result = []
    for i in a:
        cur = ""

        for j in str(bin(i))[2:]:
            if j == "1":
                cur += "#"
            else:
                cur += " "
        result.append((n - len(cur)) * " " + cur)

    return result

 

참고할만한 코드

def solution(n, arr1, arr2):
    answer = []
    for i,j in zip(arr1,arr2):
        a12 = str(bin(i|j)[2:])
        a12=a12.rjust(n,'0')
        a12=a12.replace('1','#')
        a12=a12.replace('0',' ')
        answer.append(a12)
    return answer

 

 

rjust, ljust, zfill 함수를 이용해 공백을 자동으로 메워줄 수 있다!

https://www.crocus.co.kr/1660

+ Recent posts