[코딩테스트 입문]Day17
숫자 찾기
문제 설명
정수 num
과 k
가 매개변수로 주어질 때, num
을 이루는 숫자 중에 k
가 있으면 num
의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <
num
< 1,000,000 - 0 ≤
k
< 10 num
에k
가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
입출력 예
num | k | result |
---|---|---|
29183 | 1 | 3 |
232443 | 4 | 4 |
123456 | 7 | -1 |
문제 풀이
def solution(num, k):
for i, v in enumerate(str(num)):
if v == str(k):
return i+1
return -1
def solution(num, k):
return -1 if str(k) not in str(num) else str(num).find(str(k)) + 1
n의 배수 고르기
문제 설명
정수 n
과 정수 배열 numlist
가 매개변수로 주어질 때, numlist
에서 n
의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
n
≤ 10,000 - 1 ≤
numlist
의 크기 ≤ 100 - 1 ≤
numlist
의 원소 ≤ 100,000
입출력 예
n | 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 [i for i in numlist if i % n == 0]
자릿수 더하기
문제 설명
정수 n
이 매개변수로 주어질 때 n
의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
제한사항
- 0 ≤
n
≤ 1,000,000
입출력 예
n | result |
---|---|
1234 | 10 |
930211 | 16 |
문제 풀이
def solution(n):
answer = 0
for i in str(n):
answer += int(i)
return answer
def solution(n):
return sum(int(i) for i in str(n))
OX퀴즈
문제 설명
덧셈, 뺄셈 수식들이 ‘X [연산자] Y = Z’ 형태로 들어있는 문자열 배열 quiz
가 매개변수로 주어집니다. 수식이 옳다면 “O”를 틀리다면 “X”를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
- 1 ≤
quiz
의 길이 ≤ 10 - X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
- X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
- -10,000 ≤ X, Y ≤ 10,000
- -20,000 ≤ Z ≤ 20,000
- [연산자]는 + 와 - 중 하나입니다.
입출력 예
quiz | result |
---|---|
[“3 - 4 = -3”, “5 + 6 = 11”] | [“X”, “O”] |
[“19 - 6 = 13”, “5 + 66 = 71”, “5 - 15 = 63”, “3 - 1 = 2”] | [“O”, “O”, “X”, “O”] |
문제 풀이
def solution(quiz):
answer = []
for i in quiz:
new = i.split("=")
if eval(new[0]) == int(new[1]):
answer.append("O")
else:
answer.append("X")
return answer
def solution(quiz):
answer = []
for i in quiz:
a = i.split()
if a[1] == '-':
dab = int(a[0]) - int(a[2])
if dab == int(a[-1]):
answer.append("O")
else:
answer.append("X")
else:
dab = int(a[0]) + int(a[2])
if dab == int(a[-1]):
answer.append("O")
else:
answer.append("X")
return answer
다른 풀이들을 읽어보다가 현업에서는 eval
을 사용하면 보안적인 문제 때문에 좋아하지 않는다는 말이 있길래 eval
을 안쓰고 문제를 푸는 것을 추가했습니다.
댓글남기기