본문 바로가기
스터디/Python

[CodingTest][2022-12-17~24]프로그래머스 코딩테스트 입문 Part.2

by SeO.V 2022. 12. 19.

프로그래머스 코딩테스트 입문

2022-12-17 ~ 2022-12-24 까지 최소 30문제 풀기. 밀린 것과 정리 안된 거 정리 part 2

푼 문제 : 직각삼각형 출력하기, 배열의 유사도, 자릿수 더하기, 숨어있는 숫자의 덧셈 (1), 모음 제거, 개미 군단, 세균 증식, 대문자와 소문자, n의 배수 고르기, 문자열 정렬하기 (1), 주사위의 개수, 암호 해독, 가위 바위 보, 가장 큰 수 찾기, 배열 회전시키기, 외계행성의 나이 

총 16개 품.

 

직각삼각형 출력하기

link : https://school.programmers.co.kr/learn/courses/30/lessons/120823

문제 설명

"\*"의 높이와 너비를 1이라고 했을 때, "\*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

제한사항

  • 1 ≤ n ≤ 10

입출력 예

입력 #1

3

출력 #1

*
**
***

코드 제출 :

# 제출
n = int(input())
for i in range(n):
    print('*'*(i+1))

해설

더보기

for 문으로 출력


배열의 유사도

link : https://school.programmers.co.kr/learn/courses/30/lessons/120903

 

문제 설명

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

입출력 예

s1  s2 result 
["a", "b", "c"] ["com", "b", "d", "p", "c"]  2
["n", "omg"] ["m", "dot"] 0


코드 제출 :

# 제출
def solution(s1, s2):
    answer = 0
    for s in s2:
        if s in s1:
            answer += 1
    return answer
# 다른 사람 풀이 중에서 감탄
# 문제 중에 "s1과 s2는 각각 중복된 원소를 갖지 않습니다." 라는 게 있고 이걸 이용해서 set으로 한 번 잡은 후에 len으로 거른 느낌.
def solution(s1, s2):
    return len(set(s1) & set(s2))

해설

더보기

문제 그대로.


자릿수 더하기

link : https://school.programmers.co.kr/learn/courses/30/lessons/120906

 

문제 설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

 

제한사항

  • 0 ≤ n ≤ 1,000,000

입출력 예

n result
1234 10
930211 16

 

코드 제출 :

# 제출
def solution(n):
    return sum([int(num) for num in str(n)])
# 다른사람 풀이
def solution(n):
    return sum(list(map(int,list(str(n)))))

해설

더보기

정수로 들어온 걸 문자열로 만든 다음에 한 글자씩 list로 분리 후에 sum으로 총합 구함.

 


숨어있는 숫자의 덧셈 (1)

link : https://school.programmers.co.kr/learn/courses/30/lessons/120851

 

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

 

입출력 예

my_string  result
"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

 

코드 제출 :

# 제출
def solution(my_string):
    return sum(map(int,filter(lambda s: s.isdigit() == True, my_string)))
# 다른 사람 풀이 1
def solution(my_string):
    return sum(int(i) for i in my_string if i.isdigit())
# 다른 사람 풀이 2
import re

def solution(my_string):
    return sum(int(n) for n in re.sub('[^1-9]', '', my_string))

해설

더보기

ref : https://docs.python.org/ko/3/library/stdtypes.html?highlight=isdigit#str.isdigit 

filter로 my_string을 loop 시킬 때, isdigit() True면 추가되게 하고, map으로 int 로 casting한 다음에 int형의 list를 sum 함.

점수 : 1101(+1)


모음 제거

link : https://school.programmers.co.kr/learn/courses/30/lessons/120849

 

문제 설명

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • my_string은 소문자와 공백으로 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000

 

입출력 예

my_string  result
"bus" "bs"
"nice to meet you" "nc t mt y"

 

 

코드 제출 :

# 제출
def solution(my_string):
    vowel = ['a','e','i','o','u']
    return ''.join(list(filter(lambda s : s not in vowel, my_string)))

해설

더보기

vowel이라는 모음 list 만든 다음에 동일하게 list안의 filter로서 모음 제외한 조건으로 만들고 문자열로서 join

점수 : 1102(+1)


개미군단

link : https://school.programmers.co.kr/learn/courses/30/lessons/120837

 

문제 설명

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • hp는 자연수입니다.
  • 0 ≤ hp ≤ 1000

 

입출력 예

hp  result
23 5
24 6
999 201

 

코드 제출 :

# test
hp = 999
general = 5
solider = 3
worker = 1
print(hp % general)
print(hp // general)
print((hp % general)//solider)
print((hp // general)+((hp % general)//solider)+(((hp % general)%solider)//worker))
# 제출
def solution(hp):
    general = 5
    solider = 3
    worker = 1
    return (hp // general)+((hp % general)//solider)+(((hp % general)%solider)//worker)

해설

더보기

장군은 5, 병정은 3, 일개미는 1이라고 변수 처리 한 다음에 큰 수부터 //로 나눈 값에 나머지가 있으면 그걸 다시 나누고 남은 값으로 처리 해서 총합.

점수 : 1103(+1)


세균 증식

link : https://school.programmers.co.kr/learn/courses/30/lessons/120910

 

문제 설명

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 10
  • 1 ≤ t ≤ 15

 

입출력 예

n t result
2 10 2048
7 15 229,376

 

코드 제출 :

# 제출
def solution(n, t):
    return (pow(2,t)*n)
# 다른 사람 풀이 1
def solution(n, t):
    return 2**t * n

# 다른 사람 풀이 2
def solution(n, t):
    return n << t

해설

더보기

 

# 해설

ref : https://docs.python.org/ko/3/library/functions.html?highlight=pow#pow

 

pow(base: int, exp: int, mod: int) -> int

pow(base, exp, mod=None)

base 의 exp 거듭제곱을 반환함. 시간당 1시간에 두배만큼 증식한다고 했고 입출력의 예시로 7의 15시간동안 제곱이니 식으로 보자면

7 * (2^15) 셈이라서 그걸 pow 내부 메서드를 이용.

 

# 다른 사람 풀이 이야기

return 2**t * n 이것도 간단하고 좋지만 두 번째인 return n << t 이걸 제일 감탄함. 

ref : https://www.w3schools.com/python/python_operators.asp 

ref : https://dojang.io/mod/page/view.php?id=2460

 

<< : 비트 왼쪽 시프트 -> a의 비트를 b번 왼쪽으로 이동시킴

=> 결국 수로 보자면 제곱근을 하는 셈.

e.g) a << b

 

>> : 비트 오른쪽 시프트 -> a의 비트를 b번 오른쪽으로 이동시킴

=> 

e.g) a >> b

 

해당 결과 output 찍어봄

n = 7
t = 15
for i in range(t+1):
    print(f'n : {n} / i : {i} / n << i : {n << (i+1)}')
    print(f'i : {i} - bin({n}*(2**{i}))[2:] = {7*(2**i)} : {bin(7*(2**i))[2:]}')

 결과: 

n : 7 / i : 0 / n << i : 14
i : 0 - bin(7*(2**0))[2:] = 7 : 111
n : 7 / i : 1 / n << i : 28
i : 1 - bin(7*(2**1))[2:] = 14 : 1110
n : 7 / i : 2 / n << i : 56
i : 2 - bin(7*(2**2))[2:] = 28 : 11100
n : 7 / i : 3 / n << i : 112
i : 3 - bin(7*(2**3))[2:] = 56 : 111000
n : 7 / i : 4 / n << i : 224
i : 4 - bin(7*(2**4))[2:] = 112 : 1110000
n : 7 / i : 5 / n << i : 448
i : 5 - bin(7*(2**5))[2:] = 224 : 11100000
n : 7 / i : 6 / n << i : 896
i : 6 - bin(7*(2**6))[2:] = 448 : 111000000
n : 7 / i : 7 / n << i : 1792
i : 7 - bin(7*(2**7))[2:] = 896 : 1110000000
n : 7 / i : 8 / n << i : 3584
i : 8 - bin(7*(2**8))[2:] = 1792 : 11100000000
n : 7 / i : 9 / n << i : 7168
i : 9 - bin(7*(2**9))[2:] = 3584 : 111000000000
n : 7 / i : 10 / n << i : 14336
i : 10 - bin(7*(2**10))[2:] = 7168 : 1110000000000
n : 7 / i : 11 / n << i : 28672
i : 11 - bin(7*(2**11))[2:] = 14336 : 11100000000000
n : 7 / i : 12 / n << i : 57344
i : 12 - bin(7*(2**12))[2:] = 28672 : 111000000000000
n : 7 / i : 13 / n << i : 114688
i : 13 - bin(7*(2**13))[2:] = 57344 : 1110000000000000
n : 7 / i : 14 / n << i : 229376
i : 14 - bin(7*(2**14))[2:] = 114688 : 11100000000000000
n : 7 / i : 15 / n << i : 458752
i : 15 - bin(7*(2**15))[2:] = 229376 : 111000000000000000

 비트가 이동한다는 말을 이렇게 되는 구나 싶기도 하고 2제곱이라서 가능하겠구나 싶음.

 

점수 : 1104(+1)


대문자와 소문자

link : https://school.programmers.co.kr/learn/courses/30/lessons/120893

 

문제 설명

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 영어 대문자와 소문자로만 구성되어 있습니다.

 

입출력 예

my_string result
"cccCCC" "CCCccc"
"abCdEfghIJ" "ABcDeFGHij"

 

 

코드 제출 :

# 제출
def solution(my_string):
    return ''.join(list(map(lambda l : l.upper() if l.islower() else l.lower(), my_string)))

 

해설

더보기

ref : https://docs.python.org/3/library/stdtypes.html?#str.islower

ref : https://docs.python.org/3/library/functions.html?highlight=map#map

if else의 삼항 연산자의 경우 filter 사용이 불가하므로 map의 기능을 이용하고 조건에 대해서는 islower 와 upper(), lower() 메서드 이용. map(function, iterable, *iterables) 로서 str이나 int 같이 casting 이 아닌, function의 조건으로서 lambda 이용.

점수 : 1105(+1)


n의 배수 고르기

link : https://school.programmers.co.kr/learn/courses/30/lessons/120905

 

문제 설명

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 10,000
  • 1 ≤ numlist의 크기 ≤ 100
  • 1 ≤ numlist의 원소 ≤ 100,000

 

입출력 예

numlist  result
3 [4, 5, 6, 7, 8, 9, 10, 11, 12] [6, 9, 12]
5 [1, 9, 3, 10, 13, 5] [10, 5]
12 [2, 100, 120, 600, 12, 12] [120, 600, 12, 12]

 

 

코드 제출 :

def solution(n, numlist):
    return list(filter(lambda num : num % n == 0, numlist))

해설

더보기

lambda 로 if 조건문 걸어서 filter 처리 후 list 반환

점수 : 1106(+1)


문자열 정렬하기 (1)

link : https://school.programmers.co.kr/learn/courses/30/lessons/120850

 

문제 설명

문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

 

제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • my_string에는 숫자가 한 개 이상 포함되어 있습니다.
  • my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -

입출력 예

my_string result
"hi12392" [1, 2, 2, 3, 9]
"p2o4i8gj2" [2, 2, 4, 8]
"abcde0" [0]

 

 

코드 제출 :

# 제출
def solution(my_string):
    return sorted(map(int,filter(lambda x : x.isdigit(), my_string)))
# 다른 사람 풀이
def solution(my_string):
    return sorted([int(c) for c in my_string if c.isdigit()])
# 이것도 깔끔.

해설

더보기

문제 그대로. filter, lambda로 만든 함수를 int의 casting이 필요해서 map 처리 후 sorted 로 감쌈.

점수 : 1107(+1)


자릿수 더하기

link : https://school.programmers.co.kr/learn/courses/30/lessons/120845

 

문제 설명

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • box의 길이는 3입니다.
  • box[0] = 상자의 가로 길이
  • box[1] = 상자의 세로 길이
  • box[2] = 상자의 높이 길이
  • 1 ≤ box의 원소 ≤ 100
  • 1 ≤ n ≤ 50
  • n ≤ box의 원소
  • 주사위는 상자와 평행하게 넣습니다.

입출력 예

box  result
[1, 1, 1] 1 1
[10, 8, 6] 3 12

 

코드 제출 :

# 제출
def solution(box, n):
    return (box[0]//n)*(box[1]//n)*(box[2]//n)

 

해설

더보기
# test
box = [10, 8, 6]
n = 3
print(box[0] // n)
print(box[1] // n)
print(box[2] // n)

위처럼 테스트로 확인해 본 후,

각 가로 * 세로 * 높이를 하기 전에 //n 로 나눠서 나오는 값으로 곱함.

점수 : 1108(+1)


암호 해독

link : https://school.programmers.co.kr/learn/courses/30/lessons/120892

 

문제 설명

군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.

  • 암호화된 문자열 cipher를 주고받습니다.
  • 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.

문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ cipher의 길이 ≤ 1,000
  • 1 ≤ code ≤ cipher의 길이
  • cipher는 소문자와 공백으로만 구성되어 있습니다.
  • 공백도 하나의 문자로 취급합니다.

입출력 예

cipher  code  result
"dfjardstddetckdaccccdegk" 4 "attack"
"pfqallllabwaoclk" 2 "fallback"

 

코드 제출 :

# 제출
def solution(cipher, code):
    return cipher[code-1::code]

 

해설

더보기

시작열과 배수번째라고 해서 문자열 슬라이싱 떠올림.

시작되는 번호수에서 -1하면 index 번호이고, 배수에 대해서는 그대로 해서 사용.


가위 바위 보

link : https://school.programmers.co.kr/learn/courses/30/lessons/120839

 

문제 설명

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < rsp의 길이 ≤ 100
  • rsp와 길이가 같은 문자열을 return 합니다.
  • rsp는 숫자 0, 2, 5로 이루어져 있습니다.

 

입출력 예

rsp result
"2" "0"
"205" "052"

 

 

코드 제출 :

# 제출
def solution(rsp):
    answer = []
    for item in rsp:
        if item == '2':
            answer.append('0')
        if item == '0':
            answer.append('5')
        if item == '5':
            answer.append('2')
    return ''.join(answer)

해설

더보기

ref : https://docs.python.org/3/library/stdtypes.html?highlight=replace#str.replace

처음에 replace 이용해서 여러 조건 겹쳐보려고 했는데 안되서 간략하게 .

다른 사람 풀이

더보기

다른 글은 모르겠는데,

dict을 이용한 거랑

# 다른 사람 풀이
def solution(rsp):
    d = {'0':'5','2':'0','5':'2'}
    return ''.join(d[i] for i in rsp)

 

replace 내가 생각 했던 거를 복잡하게 아니라 간단하게 쓴 게 좋음

# 다른 사람 풀이 2
def solution(rsp):
    print(f'rsp : {rsp}')
    rsp = rsp.replace('2','s')
    print(f"after rsp.replace('2','s') : {rsp}")
    rsp = rsp.replace('5','p')
    print(f"after rsp.replace('5','p') : {rsp}")
    rsp = rsp.replace('0','r')
    print(f"after rsp.replace('0','r') : {rsp}")
    rsp = rsp.replace('r','5')
    print(f"after rsp.replace('r','5') : {rsp}")
    rsp = rsp.replace('s','0')
    print(f"after rsp.replace('s','0') : {rsp}")
    rsp = rsp.replace('p','2')
    print(f"after rsp.replace('p','2') : {rsp}")
    return rsp

rsp = "205"
solution(rsp)

# output:
# rsp : 205
# after rsp.replace('2','s') : s05
# after rsp.replace('5','p') : s0p
# after rsp.replace('0','r') : srp
# after rsp.replace('r','5') : s5p
# after rsp.replace('s','0') : 05p
# after rsp.replace('p','2') : 052
# '052'

 

점수 : 1109(+1)


가장 큰 수 찾기

link : https://school.programmers.co.kr/learn/courses/30/lessons/120899

 

문제 설명

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array 원소 ≤ 1,000
  • array에 중복된 숫자는 없습니다.

입출력 예

array  result
[1, 8, 3] [8, 1]
[9, 10, 11, 8] [11, 2]

 

 

코드 제출 :

def solution(array):
    return [max(array), array.index(max(array))]

 

해설

더보기

ref : https://docs.python.org/ko/3/library/array.html#array.array.index

max()로 가장 큰 수를 호출하고, 거기에 index() 메서드를 이용해서 해당의 index 번호를 반환하는 걸 이용해서 처리

점수 : 1112(+1)


약수 구하기

link : https://school.programmers.co.kr/learn/courses/30/lessons/120897

 

문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 10,000

 

입출력 예

result
24 [1, 2, 3, 4, 6, 8, 12, 24]
29 [1, 29]

 

코드 제출 :

def solution(n):
    return list(filter(lambda x : n % x == 0, range(1,n+1)))

 

해설

더보기

약수라 함은 나눠지는 수니까 오름차순 되는 거 까지 고려해서 range로 1부터 시작해서 n자체까지 포함되게 n+1 하고 약수면 조건 만족하므로 filter로 list 안에 들어가도록 처리. 

다른 사람 풀이도 깔끔하다고 생각함.

# 다른 사람 풀이
def solution(n):
    return [i for i in range(1,n+1) if n%i == 0]

 

점수 : 1114(+2)


배열 회전시키기

link : https://school.programmers.co.kr/learn/courses/30/lessons/120844

 

문제 설명

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 3 ≤ numbers의 길이 ≤ 20
  • direction은 "left" 와 "right" 둘 중 하나입니다.

 

입출력 예

numbers  direction  result
[1, 2, 3] "right" [3, 1, 2]
[4, 455, 6, 4, -1, 45, 6] "left" [455, 6, 4, -1, 45, 6, 4]

 

 

코드 제출 :

# 제출
def solution(numbers, direction):
    return numbers[-1:-2:-1]+numbers[0:len(numbers)-1:] if direction == 'right' else numbers[1::]+numbers[0:1:1]

 

해설

더보기

조건이 딱 2개니까 if 로서 right 기준점 잡고.. list 끼리 연산 시킴 예를 들어서 [1,2,3]+[6,7,8] 하면 [1, 2, 3, 6, 7, 8] 되듯이 해서. slicing이라도 범위를 제대로 지정하면 요소가 1개인 list가 가능하므로.

right 일 때, numbers[-1:-2:-1] 은 가장 마지막 요소 1개짜리 list를 앞으로 하고 나머지 요소를 통으로 옮긴 셈이므로 0번째부터 마지막 제외하고 덧붙이고, left일 때는 numbers[1::] 로서 1번째 요소부터 시작하고 0번째 요소는 numbers[0:1:1]로 slicing 한 다음에 붙임.

점수 : 1115(+1)


외계행성의 나이

link : https://school.programmers.co.kr/learn/courses/30/lessons/120839

 

문제 설명

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • age는 자연수입니다.
  • age ≤ 1,000
  • PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.

 

입출력 예

age  result
23 "cd"
51 "fb"
100 "baa"

 

코드 제출 : 

# 제출
def solution(age):
    answer = {0:'a',1:'b',2:'c',3:'d',4:'e',5:'f',6:'g',7:'h',8:'i',9:'j'}
    return ''.join(list(answer[int(num)] for num in str(age)))
# 줄여서 제출
def solution(age):
    answer = {'0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h','8':'i','9':'j'}
    return ''.join(list(answer[num] for num in str(age)))

 

해설

더보기
dict 이용한 풀이 저번에 봐서 그거 그대로 이용. 
문자열로 처리 후 for 문 돌려서 그걸 다시 int하고 그 안에 dict의 key에 대한 value 처리.
그러다가 굳이 int 안 해도 되고 그냥 dict에서 문자열 처리하면 되는 거 생각남... 고쳐서도 성공 확인.

다른 사람 풀이

더보기

똑똑한 걸 봄

def solution(age):
    return ''.join([chr(int(i)+97) for i in str(age)])

ord('a') 가 97이라는 숫자가 나오는 규칙을 이용. 규칙도 0이 a 인 걸 기준으로 잡으면 동일. 어차피 십진법 안에서 동일하게 동일하므로. 

 

점수 : 1116(+1)


 

 

여기까지 part2 끝.