본문 바로가기
데이터 분석/코딩 테스트_Python

[코딩 테스트] Python - 입문 - Day9, Day10

by 초코레모네이드 2023. 8. 4.

 

프로그래머스 코딩테스트 입문
9일차: 수학, 문자열, 해시, 완전탐색, 조건문

1. 개미 군단

# 장군개미 수 = hp//5, 병정개미 수 = (hp-(hp//5)*5)//3
def solution(hp):
    jang = hp//5
    byeong = (hp-(jang*5))//3
    il = hp-((jang*5)+(byeong*3))
    answer = jang + byeong + il
    return answer

 
2. 모스 부호(1)

morse = { 
    '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
    '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
    '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
    '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
    '-.--':'y','--..':'z'
}

def solution(letter):
    # a = letter.split()
    answer = ''.join([morse[x] for x in letter.split()])
    return answer

# lambda 함수
solution = lambda letter: ''.join([morse[x] for x in letter.split()])

 
3. 가위 바위 보

# 2일 때는 0, 0일 때는 5, 5일 때는 2 return
# 문자열 rsp -> split으로 리스트로 만들기
# for문 돌면서 result 리스트 만들기 -> join으로 문자열로 바꾸기
def solution(rsp):
    result = []
    for i in range(len(rsp)):
        if rsp[i] == '2':
            result.append('0')
        elif rsp[i] == '0':
            result.append('5')
        elif rsp[i] == '5':
            result.append('2')
    answer = ''.join(result)
    return answer

 
4. 구슬을 나누는 경우의 수

def factorial(n):
    if n > 1:
        return n * factorial(n - 1)
    else:
        return 1

def solution(balls, share):
    x = factorial(balls)
    y = factorial(share)
    z = factorial(balls - share)
    
    return x / (y*z)

 

프로그래머스 코딩테스트 입문
10일차: 조건문, 배열, 수학, 시뮬레이션

1. 점의 위치 구하기

def solution(dot):
    if dot[0]>0 and dot[1]>0:
        answer = 1
    elif dot[0]>0 and dot[1]<0:
        answer = 4
    elif dot[0]<0 and dot[1]>0:
        answer = 2
    else:
        answer = 3
    return answer

 
2. 2차원으로 만들기

def solution(num_list, n):
    answer = []
    for i in range(n, len(num_list)+1, n):
        answer.append(num_list[i-n:i])
    return answer

 
3. 공 던지기

# len(numbers)와 k를 비교
def solution(numbers, k):
    길이 = len(numbers)
    idx = k*2 -2
    if 길이/2 >= k:
        answer = numbers[idx]
    elif 길이/2 < k:
        a = numbers*((k//int(길이/2))+1)
        answer = a[idx]
        print(a)
    return answer

 
4. 배열 회전시키기

# "right" : 맨 마지막이 맨 첫 번째로 이동
# "left" : 맨 첫 번째가 맨 마지막으로 이동
def solution(numbers, direction):
    length = int(len(numbers))
    first = numbers[0]
    last = numbers[-1]
    if direction == "left":
        numbers.insert(length, first)
        answer = numbers[1:length+1]
    elif direction == "right":
        numbers.insert(0, last)
        answer = numbers[0:length]
    return answer

 
 

728x90

댓글