본문 바로가기
[스파르타코딩클럽]데이터분석 과정/PYTHON

[Python 코드카타] 44~46번 (프로그래머스)

by doo_ 2024. 1. 18.

44번 최소 직사각형

def solution(sizes):
    answer = 0
    # 긴 길이가 가로로 가도록 바꾸기
    for i in range(len(sizes)) :
        if sizes[i][0] < sizes[i][1] :
            sizes[i][0], sizes[i][1] = sizes[i][1], sizes[i][0]
        else :
            continue
    a = []
    b = []
    # 각 가로 세로 길이 비교하고자 각자 분리
    for n in range(len(sizes)):
        a.append(sizes[n][0])
        b.append(sizes[n][1])
    # max 사용해서 구하기
    answer = max(a)*max(b)
    return answer

> 마음에 드는 답안

def solution(sizes):
    row = 0
    col = 0
    for a, b in sizes:
        if a < b:
            a, b = b, a
        row = max(row, a)
        col = max(col, b)
    return row * col

> 한 줄 답안

def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)
    # max(x) -> max(가로, 세로)

 

45번 시저 암호

> 아스키코드 숫자를 문자로 : chr

> 아스키코드 문자를 숫자로 : ord

def solution(s, n):
    answer = ''
    for i in range(len(s)) :
    	# 공백은 공백으로
        if s[i] == ' ' :
            answer += ' '
        else :
        	#ord와 chr을 활용
            m = ord(s[i]) + n
            if ord(s[i]) <= 90 and m > 90:
                answer += chr(m-26)
            elif ord(s[i]) <= 122 and m > 122:
                answer += chr(m-26)
            else :
                answer += chr(m)
    return answer

> isupper()와 islower()..!

def solution(s, n):
    s = list(s)
    for i in range(len(s)):
        if s[i].isupper():
            s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
        elif s[i].islower():
            s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))

    return "".join(s)

 

46번 숫자 문자열과 영단어

> isdigit() / isalpha() 활용

def solution(s):
    arr = ['zero','one','two','three','four','five','six','seven','eight','nine']
    answer = ''
    che = ''
    for i in range(len(s)):
        if s[i].isdigit():
            answer += s[i]
        else :
            che += s[i]
            if che in arr:
                answer += str(arr.index(che))
                che = ''
    answer = int(answer)
    return answer

> 간결한 답안..👏👏

def solution(s):
    num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
    answer = s
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)