티스토리 뷰
728x90
[ 코딩 테스트 연습 ]
61. 문자열 붙여서 출력하기
- 두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다. 입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요.
- 제한사항 : 1 ≤ str1, str2의 길이 ≤ 10
- 내가 푼 풀이
def solution(str1, str2):
return str1 + str2
# 입력 받기
str1, str2 = input().split()
# 출력
print(solution(str1, str2))
- 다른 사람의 풀이
print(input().strip().replace(' ', ''))
str1, str2 = input().strip().split(' ')
print(str1, str2, sep='')
- sep은 출력할 값 사이에 넣을 구분자를 지정하는 매개변수입니다. 위 코드에서 print(str1, str2, sep='')은 str1과 str2 사이에 아무런 구분자 없이 그대로 이어 붙여서 출력하라는 의미입니다.
print(''.join(input().strip().split(' ')))
str1, str2 = input().strip().split(' ')
print(str1 + str2)
62. 대문자로 바꾸기
- 알파벳으로 이루어진 문자열 myString이 주어집니다. 모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요.
- 제한사항 :
- 1 ≤ myString의 길이 ≤ 100,000
- myString은 알파벳으로 이루어진 문자열입니다.
- 1 ≤ myString의 길이 ≤ 100,000
- 내가 푼 풀이
def solution(myString):
return myString.upper()
print(solution("aBcDeFg"))
# 출력 : ABCDEFG
- 47 소문자로 바꾸기 문제와 반대의 문제, upper() 은 문자열을 모두 대문자로 변환하는 파이썬의 내장 메서드
- 다른 사람의 풀이
def solution(myString):
answer = ''
for i in myString:
if i.islower:
answer += i.upper()
else:
answer += i
return answer
solution = lambda n : n.upper()
def solution(myString):
return ''.join(c.upper() for c in myString)
def solution(myString):
answer = ''
return myString.upper()
63. 더 크게 합치기
- 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
- 12 ⊕ 3 = 123
- 3 ⊕ 12 = 312
- 제한사항 : 1 ≤ a, b < 10,000
- 내가 푼 풀이 (56. 두 수의 연산값 비교하기 참조)
def solution(a, b):
x = str(b) + str(a)
y = str(a) + str(b)
if int(x) > int(y):
return int(x)
elif int(x) <= int(y):
return int(y)
print(solution(9,91))
# 출력 : 991
- 다른 사람의 풀이
def solution(a, b):
return int(max(f"{a}{b}", f"{b}{a}"))
def solution(a, b):
a, b = str(a), str(b)
return int(max(a+b, b+a))
def solution(a, b):
a,b=str(a),str(b)
return max(int(a+b), int(b+a))
64. 홀짝에 따라 다른 값 반환
- 양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요. .
- 제한사항 : 1 ≤ n ≤ 100
- 내가 푼 풀이
def solution(n):
if n % 2 == 1: # n이 홀수인 경우
return sum(range(1, n + 1, 2))
# n 이하의 홀수의 합 반환
else: # n이 짝수인 경우
return sum(x ** 2 for x in range(2, n + 1, 2))
# n 이하의 짝수의 제곱의 합 반환
print(solution(7))
# 출력 : 16
- range() 함수에는 세 가지 방식의 사용법이 있습니다:
- range(stop): 0부터 stop - 1까지의 정수를 생성합니다.
- range(start, stop): start부터 stop - 1까지의 정수를 생성합니다.
- range(start, stop, step): start부터 stop - 1까지의 정수를 step만큼씩 증가시키면서 생성합니다.
- 다른 사람의 풀이
def solution(n):
if n%2:
return sum(range(1,n+1,2))
return sum([i*i for i in range(2,n+1,2)])
def solution(n):
answer = 0
if n%2:
for i in range(1,n+1,2):
answer += i
else:
for i in range(2,n+1,2):
answer += i**2
return answer
def solution(n):
if n % 2 != 0:
return sum(num for num in range(1, n + 1, 2))
return sum(num ** 2 for num in range(2, n + 1, 2))
65. 카운트 업
- 정수 start_num와 end_num가 주어질 때, start_num부터 end_num까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
- 제한사항 : 0 ≤ start_num ≤ end_num ≤ 50
- 내가 푼 풀이
def solution(start_num, end_num):
return list(range(start_num, end_num + 1, 1))
print(solution(3, 10))
# 출력 : [3, 4, 5, 6, 7, 8, 9, 10]
- 다른 사람의 풀이
def solution(start, end):
return [i for i in range(start,end+1)]
def solution(start, end):
answer = []
for i in range(start,end+1):
answer.append(i)
return answer
66. n의 배수 고르기
- 정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.
- 제한사항 :
- 1 ≤ n ≤ 10,000
- 1 ≤ numlist의 크기 ≤ 100
- 1 ≤ numlist의 원소 ≤ 100,000
- 내가 푼 풀이
def solution(n, numlist):
return [num for num in numlist if num % n == 0]
print(solution(3, [4,5,6,7,8,9,10,11,12]))
# 출력 : [6, 9, 12]
- 다른 사람의 풀이
def solution(n, numlist):
return list(filter(lambda v: v%n==0, numlist))
def solution(n, numlist):
answer = []
for item in numlist:
if item%n == 0:
answer.append(item)
return answer
67. n번째 원소까지
- 정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 n 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.
- 제한사항 :
- 2 ≤ num_list의 길이 ≤ 30
- 1 ≤ num_list의 원소 ≤ 9
- 1 ≤ n ≤ num_list의 길이 ___
- 내가 푼 풀이 (43. 문자열의 앞의 n글 참고)
def solution(num_lis, n):
return num_lis[:n]
print(solution([5, 2, 1, 7, 5], 3))
# 출력 : [5, 2, 1]
- 다른 사람의 풀이
def solution(num_list, n):
answer = [ num_list[i] for i in range(n) ]
return answer
68. 조건에 맞게 수열 변환하기 3
- 정수 배열 arr와 자연수 k가 주어집니다.이러한 변환을 마친 후의 arr를 return 하는 solution 함수를 완성해 주세요.
- 만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다.
- 제한사항 :
- 1 ≤ arr의 길이 ≤ 1,000,000
- 1 ≤ arr의 원소의 값 ≤ 100
- 1 ≤ k ≤ 100
- 1 ≤ arr의 길이 ≤ 1,000,000
- 내가 푼 풀이
def solution(arr, k):
return [i * k if k % 2 == 1 else i + k for i in arr ]
print(solution([1, 2, 3, 100, 99, 98], 3))
# 출력 : [3, 6, 9, 300, 297, 294]
- 다른 사람의 풀이
def solution(arr, k):
if k % 2 != 0:
return list(map(lambda x: x * k, arr))
return list(map(lambda x: x + k, arr))
def solution(arr, k):
if k%2==0:
return [a+k for a in arr]
else:
return [a*k for a in arr]
def solution(arr, k):
answer = []
if k %2 !=0:
for i in arr:
answer.append(k*i)
else:
for i in arr:
answer.append(i+k)
return answer
69. 조건에 맞게 수열 변환하기 1
- 정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요.
- 만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다.
- 제한사항 :
- 1 ≤ arr의 길이 ≤ 1,000,000
- 1 ≤ arr의 원소의 값 ≤ 100
- 1 ≤ arr의 길이 ≤ 1,000,000
- 내가 푼 풀이
def solution(arr):
result = []
for i in arr:
if i >= 50 and i % 2 == 0: # 50 이상의 짝수
result.append(i // 2)
elif i < 50 and i % 2 != 0: # 50 미만의 홀수
result.append(i * 2)
else:
result.append(i) # 조건에 맞지 않는 경우 그대로 추가
return result
print(solution([1, 2, 3, 100, 99, 98]))
# 출력 : [2, 2, 6, 50, 99, 49]
- append() 함수
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 출력: [1, 2, 3, 4]
- 다른 사람의 풀이
def solution(arr):
for i in range(len(arr)):
x=arr[i]
if x>=50 and not x%2: arr[i]//=2
elif x<50 and x%2: arr[i]*=2
return arr
def solution(arr):
for i,v in enumerate(arr):
if v>=50 and v%2==0:
arr[i]/=2
elif v<50 and v%2==1:
arr[i]*=2
return arr
- enumerate() 함수는 파이썬에서 반복 가능한(iterable) 객체(예: 리스트, 튜플, 문자열 등)를 입력으로 받아, 해당 객체의 각 요소와 인덱스를 함께 반환하는 내장 함수입니다. 예를 들어, 다음과 같이 enumerate() 함수를 사용할 수 있습니다. enumerate() 함수는 반복문에서 요소의 인덱스를 사용해야 하는 경우 유용하게 활용됩니다. 인덱스와 요소를 함께 반환하기 때문에, 보다 간편하게 반복문을 작성할 수 있습니다.
my_list = ['apple', 'banana', 'orange']
for index, fruit in enumerate(my_list):
print(index, fruit)
# 출력
# 0 apple
# 1 banana
# 2 orange
70. n 보다 커질 때까지 더하기
- 정수 배열 numbers와 정수 n이 매개변수로 주어집니다. numbers의 원소를 앞에서부터 하나씩 더하다가 그 합이 n보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요.
- 제한사항 :
- 1 ≤ numbers의 길이 ≤ 100
- 1 ≤ numbers의 원소 ≤ 100
- 0 ≤ n < numbers의 모든 원소의 합
- 내가 푼 풀이
def solution(numbers, n):
total_sum = 0
for i in numbers:
total_sum += i
if total_sum > n:
return total_sum
print(solution([34, 5, 71, 29, 100, 34],123))
# 출력 : 139
- 다른 사람의 풀이
def solution(numbers, n): answer = 0 # 결과를 저장할 변수를 초기화합니다. i=0 # 인덱스 변수를 초기화합니다. while answer<=n: # answer가 n 이하인 동안 반복합니다. answer+=numbers[i] # numbers 리스트의 현재 인덱스 값을 answer에 더합니다. i+=1 # 인덱스를 1 증가시킵니다. return answer # 결과를 반환합니다.
def solution(numbers, n): answer = 0 for i in range(len(numbers)): answer = sum(numbers[:i+1]) if answer > n: return answer
반응형
'AI웹 개발자 과정 공부 (팀스파르타) > 코딩테스트 연습' 카테고리의 다른 글
24.03.19_TIL (알고리즘 예제 81-90) (0) | 2024.03.19 |
---|---|
24.03.15_TIL (알고리즘 예제 71-80) (0) | 2024.03.15 |
24.03.13_TIL (알고리즘 예제 56-60) (0) | 2024.03.13 |
24.03.12_TIL (알고리즘 예제 51-55) (0) | 2024.03.12 |
24.03.08_TIL (알고리즘 예제 41-50) (0) | 2024.03.08 |