티스토리 뷰

728x90

 

 

 

[ 코딩 테스트 연습 ]

 

 

 

 

 

56.  두 수의 연산값 비교하기 

  • 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
    • 12 ⊕ 3 = 123
    • 3 ⊕ 12 = 312
    양의 정수 a와 b가 주어졌을 때, a  b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요. 단, a  b와 2 * a * b가 같으면 a  b를 return 합니다.
  • 제한사항 : 1 ≤ a, b < 10,000
  • 내가 푼 풀이
def solution(a, b):
    x = 2 * a * b
    y = str(a) + str(b)
    if int(x) > int(y):
        return int(x)
    elif int(x) <= int(y):
        return int(y)

print(solution(91,2))
# 출력 : 912
  • 다른 사람의 풀이
def solution(a, b):
    return max(int(str(a) + str(b)), 2 * a * b)
def solution(a, b):
    return int(str(a) + str(b)) if int(str(a) + str(b)) > 2*a*b else 2*a*b
def solution(a, b):
    string_ab = str(a) + str(b)
    caluated_ab = 2 * a * b
    return int(string_ab) if int(string_ab) > caluated_ab else caluated_ab

 

 

 

 

 

 

 

 

57.  수 조작하기 1 

  • 정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
    • "w" : n이 1 커집니다.
    • "s" : n이 1 작아집니다.
    • "d" : n이 10 커집니다.
    • "a" : n이 10 작아집니다.
    위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
  • 제한사항 :
    • -100,000 ≤ n ≤ 100,000
    • 1 ≤ control의 길이 ≤ 100,000
      • control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.
  • 내가 푼 풀이
def solution(n, control):
    for i in control:
        if i == 'w':
            n += 1
        elif i == 's':
            n -= 1
        elif i == 'd':
            n += 10
        elif i == 'a':
            n -= 10
    return n

print(solution(0, "wsdawsdassw"))
# 출력 : -1
  • 다른 사람의 풀이
def solution(n, control):
    key = dict(zip(['w','s','d','a'], [1,-1,10,-10]))
    return n + sum([key[c] for c in control])
def solution(n, control):
    answer = n
    c = { 'w':1, 's':-1, 'd':10, 'a':-10}
    for i in control:
        answer += c[i]
    return answer
def solution(n, control):

    control_dict = {'w' : "1" , 's' : "-1", 'd' : "10", 'a' : "-10"}

    return eval("+".join(control_dict[letter] for letter in control)) + n

 

 

 

 

 

 

 

58.  정수찾기 

  • 정수 리스트 num_list와 찾으려는 정수 n이 주어질 때, num_list안에 n이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요.
  • 제한사항 : 
    • 3 ≤ num_list의 길이 ≤ 100
    • 1 ≤ num_list의 원소 ≤ 100
    • 1 ≤ n ≤ 100
  • 내가 푼 풀이
def solution(num_list, n):
    return 1 if n in num_list else 0

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

 

  • 다른 사람의 풀이
def solution(num_list, n):
    answer = 0
    if n in num_list:
        answer=1
    else:
        answer=0
    return answer
def solution(num_list, n):
    return [0,1][n in num_list]

 

 

 

 

 

 

 

 

 

59.  홀짝구분하기

  • 자연수 n이 입력으로 주어졌을 때 만약 n이 짝수이면 "n is even"을, 홀수이면 "n is odd"를 출력하는 코드를 작성해 보세요.
  • 제한사항 :  1 ≤ n ≤ 1,000
  • 내가 푼 풀이
a = int(input())
if a % 2 == 0:
    print(f"{a} is even")
else:
    print(f"{a} is odd")

 

 

 

  • 다른 사람의 풀이
N = int(input())
print(f"{N} is {'even' if N % 2 == 0 else 'odd'}")
a = int(input())

if a % 2 == 0:
    print('{} is even'.format(a))
else:
    print('{} is odd'.format(a))
n=int(input())
print(f"{n} is {'eovdedn'[n&1::2]}")
  • #  n is 까진 똑같고 뒤에 even인지 odd인지 출력해야하는데 n&1했을 때 1이면 홀수고 0이면 짝수이니까 만약 짝수라면 0번째자리인 e부터 시작해서 2칸씩 띄워서 even이 나오게 되는겁니다.

 

 

 

 

 

 

 

60.  뒤에서 5등까지 

  • 정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
  • 제한사항 :
    • 6 ≤ num_list의 길이 ≤ 30
    • 1 ≤ num_list의 원소 ≤ 100
  • 내가 푼 풀이
def solution(num_list):
    return sorted(num_list)[:5]

print(solution([12, 4, 15, 46, 38, 1, 14]))
# 출력 : [1, 4, 12, 14, 15]
  • sorted() 함수는 파이썬의 내장 함수로, iterable 객체(리스트, 튜플, 문자열 등)를 받아서 정렬된 새로운 리스트를 반환

 

  • 다른 사람의 풀이
def solution(num_list):
    answer = []
    for i in range(5):

        answer.append(min(num_list))
        num_list.remove(min(num_list))
    return answer
solution = lambda l: sorted(l)[:5]

 

 

 

 

 

 

 

 

 

 

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