6.3 미경이 스터디

코변·2022년 6월 3일
0
post-thumbnail

Photo by Pietro Mattia on Unsplash

최소직사각형

def solution(nums):
    maximum = max(nums)
    for num in nums:
        maximum = max([max(maximum), max(num)]), max([min(num), min(maximum)])
    return maximum[0] * maximum[1]

처음에는 max값으로 뽑힌 값과 비교하면 될거라고 생각해서 코드를 작성했다. 그런데 다른 사람의 답안들을 본 결과 list comprehension으로 index 0과 1 값의 max, min 값을 모아 각각의 max값을 곱하면 답이 나온다는 것을 알게되었다. 참고하여 만든 코드는 다음과 같다.

def solution(nums):
    return max(max(num) for num in nums) * max(min(num) for num in nums)

모의고사

def solution(answers):
    fir_patt = [1,2,3,4,5]
    sec_patt = [2,1,2,3,2,4,2,5]
    thi_patt = [3,3,1,1,2,2,4,4,5,5]
    grades = [0, 0, 0]
    for idx, answer in enumerate(answers):
        grades[0] += (answer == fir_patt[idx % 5])
        grades[1] += (answer == sec_patt[idx % 8])
        grades[2] += (answer == thi_patt[idx % 10])
    return [i+1 for i, grade in enumerate(grades) if max(grades) == grade]

패턴이 반복되는 주기별로 나눈 나머지값들을 검사해보는 로직을 짰다. 여기서 코드를 더 줄이려면 억지로 줄이는 느낌이 들어서 직관적으로 보기 좋게 짠 것 같아서 굳이 고치지 않았다.

숫자 문자열과 영단어

def solution(s):
    alp_nums = [
        'zero', 'one', 'two',
        'three','four','five',
        'six','seven','eight',
        'nine']
    for idx, alp_num in enumerate(alp_nums):
        s = s.replace(alp_num, str(idx))
    return int(s)

replace를 활용하여 문자로 된 숫자를 숫자값으로 바꿔주었다. 혹시 될까 싶어서 문자열 s안에 알파벳 숫자가 있는지 검사하는 if문을 빼고 바로 써봤는데 동작하는 걸 보고 replace에는 검사하고자하는 값이 없어도 상관없다는 사실을 알게되었다.

그 밖의 문제

폰켓몬

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글