티스토리 뷰

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입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.
  • 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.
  • 제한사항 :
    • 2 ≤ numLog의 길이 ≤ 100,000
      • -100,000 ≤ numLog[0] ≤ 100,000
      • 1 ≤ i  numLog의 길이인 모든 i에 대해 |numLog[i] - numLog[i - 1]|의 값은 1 또는 10입니다.
  • 내가 푼 풀이
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은 알파벳 소문자로 이루어진 문자열입니다.
  • 내가 푼 풀이
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

 

 

 

 

 

 

 

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