티스토리 뷰

728x90

 

[ 코딩 테스트 연습 ]

 
 
 
 
 
 

131. 9로 나눈 나머지 

  • 음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다.
    이 사실을 이용하여 음이 아닌 정수가 문자열 number로 주어질 때, 이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해주세요.
  • 제한사항 :
    • 1 ≤ number의 길이 ≤ 100,000
    • number의 원소는 숫자로만 이루어져 있습니다.
    • number는 정수 0이 아니라면 숫자 '0'으로 시작하지 않습니다.
  • 내가 푼 풀이
def solution(number):
    digits = sum([int(i) for i in str(number)])
    return digits % 9

print(solution("78720646226947352489"))
# 출력 : 2

 

  • 다른 사람의 풀이
def solution(number):
    return int(number) % 9
def solution(number):
    return sum(map(int, number)) % 9

 

 

 

 

 

 

 

 

132. 주사위 게임 2 

  • 1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
    • 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
    • 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
    • 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
    세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
  • 제한사항 :
    • a, b, c는 1이상 6이하의 정수입니다.
  • 내가 푼 풀이
def solution(a, b, c):
    if a != b != c :
        return a + b + c
    elif a == b == c:
        return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
    else:
        return (a + b + c) * (a**2 + b**2 + c**2)

print(solution(4,4,4))
# 출력 : 110592

 

* 공간 복잡도 때문에 안되서 줄여줌 a!=c 가 아니고 둘이 같이져서 안돌아감. 이때 and 로 나누어줘야함

def solution(a, b, c):
    if len({a,b,c}) == 3 :
        return a + b + c
    elif len({a,b,c}) == 1 :
        return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
    else:
        return (a + b + c) * (a**2 + b**2 + c**2)

print(solution(4,4,4))
# 출력 : 110592

 

 

  • 다른 사람의 풀이 
def solution(a, b, c):
    check=len(set([a,b,c]))
    if check==1:
        return 3*a*3*(a**2)*3*(a**3)
    elif check==2:
        return (a+b+c)*(a**2+b**2+c**2)
    else:
        return (a+b+c)

 

 

 

 

 

 

 

 

 

 

133. 피자 나눠 먹기 (2) 

  • 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
  • 제한사항 : 1 ≤ n ≤ 100
  • 내가 푼 풀이
def solution(n):
    i = 6  # 주어진 사람 수와 6의 최소 공배수 계산
    while i % n != 0:
        i += 6
    return i // 6

print(solution(10))
# 출력 : 5

 

 

  • 다른 사람의 풀이
def solution(n):
    i=1
    while(1):
        if (6*i)%n==0:
            return i
        i+=1
def solution(n):
    answer = 1
    while 6 * answer % n:
        answer += 1
    return answer

 

 

 

 

 

 

 

 

 

 

134. 369 게임 

  • 머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.
  • 제한사항 :
    • 1 ≤ order ≤ 1,000,000
  • 내가 푼 풀이
def solution(num):
    count = 0
    for i in str(num):
        if i in ['3', '6', '9']:
            count += 1
    return count

print(solution(29423))
# 출력 : 2

 

  •  다른 사람의 풀이
def solution(order):
    return sum(map(lambda x: str(order).count(str(x)), [3, 6, 9]))
def solution(order):
    answer = len([1 for ch in str(order) if ch in "369"])
    return answer

 

 

 

 

 

 

 

 

 

 

135. 문자열 정렬하기 (2) 

  • 영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
  • 제한사항 :
    • 0 < my_string 길이 < 100
  • 내가 푼 풀이
def solution(my_string):
    return ''.join(sorted(my_string.lower()))

print(solution("heLLo"))
# 출력 : ehllo

 

 

 

 

 

 

 

 

136. 나머지가 1이 되는 수 찾기 

  • 자연수 n이 매개변수로 주어집니다. n x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
  • 제한사항 :
    • 3 ≤ n ≤ 1,000,000
  • 내가 푼 풀이
def solution(n):
    x = 2  # x 는 2부터 시작해야함
    while n % x != 1:
        x += 1
    return x

print(solution(10))
# 출력 : 3

 

  • 다른 사람의 풀이
def solution(n):
    return [x for x in range(1,n+1) if n%x==1][0]
def solution(n):

    if not 3 <= n <= 1000000 :
        return False

    answer = 2
    while True :
        if n % answer == 1 :
            break
        else :
            answer += 1

    return answer
def solution(n):
    answer = 0
    for i in range(2, n):
        if n % i == 1:
            return i
    return answer

 

 

 

 

 

 

 

 

 

 

137.  평균 구하기 

  • 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
  • 제한사항 :
    • arr은 길이 1 이상, 100 이하인 배열입니다.
    • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
  • 내가 푼 풀이
def solution(arr):
    return sum(arr) / len(arr)

print(solution([1,2,3,4]))
# 출력 : 2.5

 

 

 

 

 

 

 

 

138.  짝수와 홀수 

  • 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
  • 제한사항 :
    • num은 int 범위의 정수입니다.
    • 0은 짝수입니다.
  • 내가 푼 풀이
def solution(num):
    if num % 2 == 0:
        return "Even"
    else:
        return "Odd"

print(solution(3))
# 출력 : odd

 

  •  다른 사람의 풀이
def evenOrOdd(num):
    return ["Even", "Odd"][num & 1]
def evenOrOdd(num):
    return "Even" if num%2==0 else "Odd"

 

 

 

 

 

 

 

 

139.  문자열을 정수로 바꾸기 

  • 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
  • 제한사항 :
    • s의 길이는 1 이상 5이하입니다.
    • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
    • s는 부호와 숫자로만 이루어져있습니다.
    • s는 "0"으로 시작하지 않습니다.
  • 입출력 예 : 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
    str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
  • 내가 푼 풀이
def solution(num):
    return int(num)

print(solution('-1234'))
# 출력 : -1234

 

 

 

 

 

 

 

 

 

140.  x 만큼 간격이 있는 n 개의 숫자 

  • 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
  • 제한사항 :
    • x는 -10000000 이상, 10000000 이하인 정수입니다.
    • n은 1000 이하인 자연수입니다.
  • 입출력 예 : x = 2 , n = 5 , answer = [2,4,6,8,10]
  • 내가 푼 풀이
def solution(x, n):
    return [x * i for i in range(1, n+1)]

print(solution(2,5))
# 출력 : [2,4,6,8,10]

 

 

 

 

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