본문 바로가기

알고리즘

코딩 테스트 연습 15일&16일

728x90

코딩 테스트 연습 15일&16일


프로그래머스, 영어가 싫어요.

📄 나의 코드

numbers = "onefourzerosixseven"

# print("one" in numbers) // True

# numbers.replace("one", "1")
# print(numbers.replace("one", "1").replace("four", "4"))

def solution(numbers):
    answer = numbers\
        .replace("zero", "0")\
        .replace("one", "1")\
        .replace("two", "2")\
        .replace("three", "3")\
        .replace("four", "4")\
        .replace("five", "5")\
        .replace("six", "6")\
        .replace("seven", "7")\
        .replace("eight", "8")\
        .replace("nine", "9")
    return int(answer)

print(solution(numbers))

replace 내장함수는 문자열로만 변경된다. 즉, str.replace("str1", "str2")
그래서 마지막 출력할 때, integer로 형변환해준 뒤, 출력했다.

📄 공부해볼 코드1

def solution(numbers):
    for num, eng in enumerate(["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]):
        numbers = numbers.replace(eng, str(num))
    return int(numbers)


📄 공부해볼 코드2

def solution(numbers):
    r = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4',\
         'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}
    for k in r.keys():
        numbers = numbers.replace(k, r[k])

    return int(numbers)

프로그래머스, 겹치는 선분의 길이

📄 나의 코드

lines = [[0, 5], [3, 9], [1, 10]]

def solution(lines):
    answer = 0

    arr = [0] * 201
    for i in lines:
        for j in range(i[0], i[1]):
            arr[j] += 1

    for k in arr:
        if k >= 2:
            answer += 1

    return answer

print(solution(lines))

[x,y]면 arr[x]부터 arr[y-1]까지 1개씩 채워지고
최종적으로 arr[index]값이 2 이상인 값만 count하는 식으로 로직을 짰다.

📄 공부해볼만한 코드

def solution(lines):
    sets = [set(range(min(l), max(l))) for l in lines]
    return len(sets[0] & sets[1] | sets[0] & sets[2] | sets[1] & sets[2])

'알고리즘' 카테고리의 다른 글

코딩 테스트 연습 20일  (0) 2022.12.20
코딩 테스트 연습 19일  (0) 2022.12.19
코딩 테스트 연습 14일  (0) 2022.12.14
코딩 테스트 연습 12일, 13일  (0) 2022.12.13
타임어택 특강  (0) 2022.12.01