12일차 문제풀이

양진혁·2021년 11월 12일
0

문제풀이

첫번째 문제는 ROT 13으로

def rot13(message):
    dd=[]
    for i in message:
        a = ord(i)  
        if 97<=a<=109 or 65<=a<=77:
            dd.append(chr(ord(i)+13))
        elif 110<=a<=122 or 78<=a<=90:
            dd.append(chr(ord(i)-13))
        else:
            dd.append(i)
    return "".join(dd)

아스키 코드를 이용해서 만약 i가 a~e 사이라면 13을 더해주고 e~z라면 13을 빼주었다. 그리고 그 안에 들어있지 않은 경우는 그대로 출력시켜 줬다.

두번째 문제는 6kyu 난이도 문제로
[] --> "no one likes this"
["Peter"] --> "Peter likes this"
["Jacob", "Alex"] --> "Jacob and Alex like this"
["Max", "John", "Mark"] --> "Max, John and Mark like this"
["Alex", "Jacob", "Mark", "Max"] --> "Alex, Jacob and 2 others like this"

사람 숫자에 따라 출력을 다르게 해야한다.

def likes(names):
    if len(names) ==0:
        return "no one likes this"
    elif len(names) == 1:
        return f'{names[0]} likes    this'
    elif len(names) == 2:
        return f'{names[0]} and {names[1]} like this'
    elif len(names) == 3:
        return f'{names[0]}, {names[1]} and {names[2]} like this'
    else: 
        return f'{names[0]}, {names[1]} and {len(names)-2} others like this'

세번째 문제는 5kyu 난이도 문제로
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15

class Sum(int):
    def __call__(self,i):
        return Sum(self+i)
def add(v):
    return Sum(v)

call을 사용해서 문제를 해결했다. call함수는 클래스 객체 자체를 호출하면 call함수의 값이 리턴된다.
이 함수는 클래스의 인스턴스를 함수로 취급 후 다른 함수의 파라미터로 사용할 수 있다.

0개의 댓글