프로그래머스 코딩테스트 Lv.0 문제들
2022-12-23
푼 문제 : 7의 개수, 문자열 정렬하기 (2), OX 퀴즈, 숫자 찾기
7의 개수
link : https://school.programmers.co.kr/learn/courses/30/lessons/120912
문제 설명
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 0 ≤ array의 원소 ≤ 100,000
입출력 예
array | result |
[7, 77, 17] | 4 |
[10, 29] | 0 |
코드 제출 :
# 제출
def solution(array):
return sum(map(int,list(str(a).count('7') for a in array)))
# 줄여서
def solution(array):
return sum(list(str(a).count('7') for a in array))
# 이렇게 줄여도 된다는 생각을 함.
해설
우선 내고서 든 건데
def solution(array):
return sum(list(str(a).count('7') for a in array))
# 이렇게 줄여도 된다는 생각을 함.
그리고 다른 사람 풀이 중에서
# 다른 사람 풀이
def solution(array):
return ''.join(map(str, array)).count('7')
나는 단순하게 구현하려는 생각으로 저렇게 했는데 7이란 문자(숫자)를 카운트를 할 거라면 다른 사람풀이가 좀 더 효율적이라는 걸 알음.
점수 : 1158(+1)
문자열 정렬하기 (2)
link : https://school.programmers.co.kr/learn/courses/30/lessons/120911
문제 설명
영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < my_string 길이 < 100
입출력 예
my_string | result |
"Bcad" | "abcd" |
"heLLo" | "ehllo" |
"Python" | "hnopty" |
코드 제출 :
# 제출
def solution(my_string):
return ''.join(sorted(my_string,key = str.lower)).lower()
해설
sorted 자체적으로 key를 쓸 수 있는 걸 기억해서 문자열 str에 lower를 적용하도록 함.
sorted(my_string, key=str.lower) # output : ['a', 'B', 'c', 'd']
그리고, ''.join() 으로 하나의 문자열로 만든 다음에 lower() 로 전부 소문자로 만들도록 함.
다른 사람 풀이 중에서 ''.join(sorted(my_string.lower())) 이것도 간단하고 좋은 듯.
점수 : 1159(+1)
OX 퀴즈
link : https://school.programmers.co.kr/learn/courses/30/lessons/120907
문제 설명
덧셈, 뺄셈 수식들이 '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 exp in quiz:
if exp.split()[1] == '+':
answer.append("O") if int(exp.split()[-1]) == (int(exp.split()[0]) + int(exp.split()[2])) else answer.append("X")
else:
answer.append("O") if int(exp.split()[-1]) == (int(exp.split()[0]) - int(exp.split()[2])) else answer.append("X")
return answer
# 줄여서
# 제출
def solution(quiz):
answer = []
for exp in quiz:
x,op,y,assign,ans = exp.split()
if op == '+':
answer.append("O") if int(ans) == int(x) + int(y) else answer.append("X")
else:
answer.append("O") if int(ans) == int(x) - int(y) else answer.append("X")
return answer
# eval 사용
def solution(quiz):
return ["O" if eval(exp.replace('=', '==')) else "X" for exp in quiz]
해설
단순하게 풀긴 했는데 해보고 생각해보니 split() 때문에 속도라던가 늦어졌으므로 줄여서도 제출 성공하긴 했음. 근데 eval()을 이용한 게 많이 보여서 eval로는 위처럼
def solution(quiz):
return ["O" if eval(exp.replace('=', '==')) else "X" for exp in quiz]
이런 걸 생각함. eval로서 ‘=’ 는 ‘==’로 replace 한 다음에 exp 자체를 eval 로 감싸서.
수식 자체로 eval("3 - 4 == -3") 해보니까 False 나온 거 보고 만듬. 근데 이래서 숏코딩으로 좋긴 하구나 싶음.
점수 : 1161(+2)
숫자 찾기
link : https://school.programmers.co.kr/learn/courses/30/lessons/120904
문제 설명
정수 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):
return str(num).find(str(k)) + 1 if str(num).find(str(k)) != -1 else -1
해설
ref : https://docs.python.org/ko/3/library/stdtypes.html?#str.find
str.find(sub[, start[, end]]) 부분 문자열 sub 가 슬라이스 s[start:end] 내에 등장하는 가장 작은 문자열의 인덱스를 돌려줍니다. 선택적 인자 start 와 end 는 슬라이스 표기법으로 해석됩니다. sub 가 없으면 -1 을 돌려줍니다.
find 메서드 이용.
근데 좀 깔끔하지 않은 거 같아서 찾아보니
# 다른 사람 풀이
def solution(num, k):
return -1 if str(k) not in str(num) else str(num).find(str(k)) + 1
이게 더 취향.
점수 : 1163(+2)
여기까지 3문제.
'스터디 > Python' 카테고리의 다른 글
[CodingTest][2022-12-29~2023-01-01]프로그래머스 코딩테스트 Lv.0 문제들 (0) | 2023.01.04 |
---|---|
[CodingTest][2022-12-25~28]프로그래머스 코딩테스트 Lv.0 문제들 (2) | 2022.12.29 |
[CodingTest][2022-12-21~22]프로그래머스 코딩테스트 Lv.0 문제들 (1) | 2022.12.22 |
[CodingTest][2022-12-20]프로그래머스 코딩테스트 Lv.0 문제들 (0) | 2022.12.20 |
[CodingTest][2022-12-17~24]프로그래머스 코딩테스트 입문 Part.2 (1) | 2022.12.19 |