티스토리 뷰
728x90
[ 코딩 테스트 연습 ]
121. 간단한 식 계산하기
- 문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.
- 제한사항 :
- 0 ≤ a, b ≤ 40,000
- 0을 제외하고 a, b는 0으로 시작하지 않습니다.
- 내가 푼 풀이
def solution(binomial):
a, op, b = binomial.split() # 숫자와 연산자 분리
a, b = int(a), int(b)
if op == '+':
return a + b
elif op == '-':
return a - b
elif op == '*':
return a * b
print(solution("0 - 7777"))
# 출력 : -7777
- 다른 사람의 풀이
solution=eval
- 예를 들어, solution("5 + 3")과 같이 호출하면 eval("5 + 3")이 실행되어 결과로 8을 반환하게 됩니다. 하지만 eval 함수는 보안 문제나 예기치 못한 결과를 일으킬 수 있으므로 주의해서 사용해야 합니다. 사용자로부터의 입력이나 믿을 수 없는 데이터를 eval 함수에 전달하는 것은 위험할 수 있습니다.
122. 접미사 배열
- 어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순(사전에 있는 순서)으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요. - 제한사항 :
- my_string은 알파벳 소문자로만 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 100
- 내가 푼 풀이
def solution(my_string):
X = [my_string[i:] for i in range(len(my_string))]
# 모든 접미사 생성
X.sort() # 사전순으로 정렬
return X
print(solution("banana"))
# 출력 : ['a', 'ana', 'anana', 'banana', 'na', 'nana']
- sort() 메서드는 문자열을 비교할 때 문자열의 첫 번째 문자부터 비교를 시작하며, ASCII 코드 값으로 비교합니다. 따라서 첫 번째 문자가 같은 경우 두 번째 문자를 비교하고, 계속해서 비교하여 더 작은 값이 나오는 것을 앞으로 이동시킵니다. 이 과정을 모든 원소에 대해 반복하여 정렬을 완료합니다.
- 다른 사람의 풀이
def solution(my_string):
return sorted(my_string[i:] for i in range(len(my_string)))
solution=lambda l:sorted([l[i:]for i in range(len(l))])
123. 약수 구하기
- 정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
- 제한사항 : 1 ≤ n ≤ 10,000
- 내가 푼 풀이
def solution(n):
divisors = []
for i in range(1, n + 1):
if n % i == 0:
divisors.append(i)
return divisors
print(solution(24))
# 출력 : [1, 2, 3, 4, 6, 8, 12, 24]
- 다른 사람의 풀이
def solution(n):
return [i for i in range(1,n+1) if n%i == 0]
124. 덧셈식 출력하기
- 두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.
a + b = c
- 제한사항 : 1 ≤ a, b ≤ 100
- 내가 푼 풀이
a, b = map(int, input().strip().split(' '))
c = a + b
print(f'{a} + {b} = {c}')
- 다른 사람의 풀이
a, b = map(int, input().strip().split(' '))
print(f"{a} + {b} = {a + b}")
a, b = map(int, input().strip().split(' '))
print(a, '+', b,'=',a+b)
125. 배열 회전시키
- 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
- 제한사항 :
- 3 ≤ numbers의 길이 ≤ 20
- direction은 "left" 와 "right" 둘 중 하나입니다.
- 내가 푼 풀이
def solution(numbers, direction):
if direction == "left":
return numbers[1:] + [numbers[0]] # 왼쪽으로 회전
elif direction == "right":
return [numbers[-1]] + numbers[:-1] # 오른쪽으로 회전
print(solution([1, 2, 3],'right'))
# 출력 : [3, 1, 2]
- 다른 사람의 풀이
def solution(numbers, direction):
return [numbers[-1]] + numbers[:-1] if direction == 'right' else numbers[1:] + [numbers[0]]
print(solution([1, 2, 3],'right'))
# 출력 : [3, 1, 2]
126. 수 조작하기 2
- 정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.
- "w" : 수에 1을 더한다.
- "s" : 수에 1을 뺀다.
- "d" : 수에 10을 더한다.
- "a" : 수에 10을 뺀다.
- 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.
- 제한사항 :
- 2 ≤ numLog의 길이 ≤ 100,000
- -100,000 ≤ numLog[0] ≤ 100,000
- 1 ≤ i ≤ numLog의 길이인 모든 i에 대해 |numLog[i] - numLog[i - 1]|의 값은 1 또는 10입니다.
- 2 ≤ numLog의 길이 ≤ 100,000
- 내가 푼 풀이
def solution(numLog):
X = ''
for i in range(1, len(numLog)):
diff = numLog[i] - numLog[i - 1]
if diff == 1:
X += 'w'
elif diff == -1:
X += 's'
elif diff == 10:
X += 'a'
elif diff == -10:
X += 'd'
return X
print(solution([0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1]))
# 출력 : wsadwsadssw
- 다른 사람의 풀이
def solution(log):
res=''
joystick=dict(zip([1,-1,10,-10],['w','s','d','a']))
for i in range(1,len(log)):
res+=joystick[log[i]-log[i-1]]
return res
127. 문자열 돌리기
- 문자열 str이 주어집니다.
문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요. - 제한사항 : 1 ≤ str의 길이 ≤ 10
- 내가 푼 풀이
str = input()
for a in str:
print(a)
- 다른 사람의 풀이
print('\n'.join(input()))
str = list(input())
for i in range(len(str)):
print(str[i])
128. 외계행성의 나이
- 우주여행을 하던 머쓱이는 엔진 고장으로 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 행성은 알파벳 소문자만 사용합니다.
- 내가 푼 풀이
def solution(age):
# 숫자와 알파벳을 대응시키는 리스트
alpha_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
# 숫자를 알파벳으로 변환하여 반환
result = ''
for i in str(age):
result += alpha_list[int(i)]
return result
print(solution(100))
# 출력 : baa
- 다른 사람의 풀이
def solution(age):
conv = {'0':'a','1':'b','2':'c','3':'d','4':'e'
,'5':'f','6':'g','7':'h','8':'i','9':'j'}
return ''.join(conv[i] for i in str(age))
def solution(age):
str_age = str(age)
answer = ''
lst =["a","b","c","d","e","f","g","h","i","j"]
for ch in str_age:
for i in range(0,10):
if int(ch) == i:
answer += lst[i]
return answer
def solution(age):
aa = str(age)
return aa.translate(str.maketrans('0123456789', 'abcdefghij'))
solution=lambda age:str(age).translate(str.maketrans('0123456789','abcdefghij'))
print(solution(100))
# 출력 : baa
129. 문자열 잘라서 정렬하기
- 문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
- 단, 빈 문자열은 반환할 배열에 넣지 않습니다.
- 제한사항 :
- 1 ≤ myString ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
- 1 ≤ myString ≤ 100,000
- 내가 푼 풀이
def solution(myString):
sub = myString.split("x")
# 빈 문자열 제외 및 사전순으로 정렬
return sorted(i for i in sub if i)
print(solution("dxccxbbbxaaaa"))
# 출력 : ['aaaa', 'bbb', 'cc', 'd']
- 다른 사람의 풀이
def solution(myString):
answer = ' '.join(myString.split('x')).split()
return sorted(answer)
def solution(myString):
return sorted(ch for ch in myString.split('x') if ch)
130. 숫자 찾기
- 정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
- 제한사항 :
- 0 < num < 1,000,000
- 0 ≤ k < 10
- num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.
- 내가 푼 풀이
def solution(num, k):
N = str(num)
if str(k) in N:
return N.index(str(k)) + 1
else:
return -1
print(solution(29183,1))
# 출력 : 3
- 다른 사람의 풀이
def solution(num, k):
for i, n in enumerate(str(num)):
if str(k) == n:
return i + 1
return -1
반응형
'AI웹 개발자 과정 공부 (팀스파르타) > 코딩테스트 연습' 카테고리의 다른 글
24.04.08_TIL (알고리즘 예제 141-150) (1) | 2024.04.08 |
---|---|
24.03.29_TIL (알고리즘 예제 131-140) (1) | 2024.03.29 |
24.03.26_TIL (알고리즘 예제 111-120) (0) | 2024.03.26 |
24.03.21_TIL (알고리즘 예제 101-110) (0) | 2024.03.21 |
24.03.20_TIL (알고리즘 예제 91-100) (0) | 2024.03.20 |