티스토리 뷰

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='')str1str2 사이에 아무런 구분자 없이 그대로 이어 붙여서 출력하라는 의미입니다.
print(''.join(input().strip().split(' ')))
str1, str2 = input().strip().split(' ')
print(str1 + str2)

 

 

 

 

 

 

 

62.  대문자로 바꾸기  

  • 알파벳으로 이루어진 문자열 myString이 주어집니다. 모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요.
  • 제한사항 :
    • 1 ≤ myString의 길이 ≤ 100,000
      • myString은 알파벳으로 이루어진 문자열입니다.
  • 내가 푼 풀이 
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
    양의 정수 a와 b가 주어졌을 때, a  b와 b  a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, a  b와 b  a가 같다면 a  b를 return 합니다.
  • 제한사항 : 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() 함수에는 세 가지 방식의 사용법이 있습니다:
  1. range(stop): 0부터 stop - 1까지의 정수를 생성합니다.
  2. range(start, stop): start부터 stop - 1까지의 정수를 생성합니다.
  3. 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
  • 내가 푼 풀이
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
  • 내가 푼 풀이
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


 

 

 

 

 

반응형
반응형
TAG
more
최근에 올라온 글