[프로그래머스]코딩테스트 입문 | 복습 Day10

sun_U·2023년 6월 16일
0
post-thumbnail

Day10. 조건문, 배열, 수학, 시뮬레이션

37. 점의 위치 구하기


문제
사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.

x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

제출 코드

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

-> 단순하게 조건문을 사용한 풀이

다른 사람 풀이

def solution(dot):
    quad = [(3,2),(4,1)]
    return quad[dot[0] > 0][dot[1] > 0]

-> 조건을 통해 인덱스값으로 접근

38. 2차원으로 만들기


문제
정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.

num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.

제출 코드

def solution(num_list, n):
    answer = [[num_list[(i*1) + (j*n)] for i in range(n)] for j in range(int(len(num_list)/n))]
    return answer

-> 리스트 컴프리헨션을 사용한 풀이. 과거 제출 코드

다른 풀이

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

-> 인덱싱을 이용한 풀이

39. 공던지기


문제
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.

제출 코드

def solution(numbers, k):
    answer = (2 * (k - 1)) % len(numbers) + 1
    return answer

오답 코드

def solution(numbers, k):
    answer = (1 + 2(k - 1)) % len(numbers) 
    return answer

-> 실패 케이스 찾기

40. 배열 회전시키기


문제
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.

제출 코드

def solution(numbers, direction):
    if direction == "right":
        answer = [numbers[-1]] + numbers[0:-1]
    elif direction == "left":
        answer = numbers[1:] + [numbers[0]]
    return answer

-> 인덱싱을 활용한 풀이

profile
Data Engineer🐣

0개의 댓글

관련 채용 정보