목록공부/알고리즘(파이썬) (64)
컴퓨터는 잘못이 없다..
['왕실의 나이트' 문제 설명] -난이도 : ★☆☆ -풀이시간 : 20분 -시간 제한 : 1초 -메모리 제한 : 128MB -출처 : 이것이 코딩테스트다(p.115) -문제 : 행복 왕국의 왕실 정원은 체스판과 같은 8x8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서 있다. 나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다. 나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다. 나이트는 특정한 위치에서 다음과 같은 2가지 경우로 이동할 수 있다. 1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기 2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 a b c d e f g h 1 2 3 4 5 6 7 8 이처럼 8x..
['시각' 문제 설명] -난이도 : ★☆☆ -풀이시간 : 15분 -시간 제한 : 2초 -메모리 제한 : 128MB -출처 : 이것이 코딩테스트다 (p.113) -문제 : 정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다. 00시 00분 03초 00시 13분 30초 반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안되는 시각이다. 00시 02분 55초 01시 27분 45초 -입력조건: 첫째줄에 정수 N이 입력된다. (0
['상하좌우' 문제 설명] -난이도 : ★☆☆ -풀이시간 : 15분 -시간 제한 : 1초 -메모리 제한 : 128MB -출처 : 이것이 코딩테스트다(p.110) -문제 : 여행가 A는 NxN크기의 정사각형 공간 위에 서있다. 이 공간은 1X1 크기의 정사각형으로 나누어져있다. 가장 왼쪽 위 좌표는 (1,1)이며, 가장 오른쪽 아래 좌표는 (N,N)에 해당한다. 여행가 A는 상,하,좌,우 방향으로 이동할 수 있으며, 시작좌표는 항상 (1,1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적인 계획서가 놓여있다. L : 왼쪽으로 한 칸 이동, R : 오른쪽으로 한칸 이동, U: 위로 한 칸 이동, D : 아래로 한 칸 이동 이때, 여행가 A가 NXN 크기의 정사각형 공간을 벗어나는 움직임은 무시된다. 예를들..
['만들 수 없는 금액' 문제 설명] -난이도 : ★☆☆ -풀이시간 : 30분 -시간 제한 : 1초 -메모리 제한 : 128MB -기출 : K대회 기출 -출처 : 이것이 코딩테스트다 with 파이썬(p.314) -문제 : 동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 예를 들어, N=5이고, 각 동전이 각각 3원, 2원, 1원, 1원, 9원짜리 (화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원입니다. 또 다른 예시로, N=3이고, 각 동전이 각각 3원, 5원, 7원짜리(화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 ..
[문자열 뒤집기 문제 설명] -난이도 : ★☆☆ -풀이시간 : 20분 -시간 제한 : 2초 -메모리 제한 : 128MB -기출 : 핵심 유형 -출처 : 이것이 코딩테스트다 with 파이썬(p.313) -문제 : 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있습니다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 합니다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것입니다. 뒤집는 것을 1을 0으로, 0을 1로 바꾸는 것을 의미합니다. 예를 들어 S=0001100일 때는 다음과 같습니다. 1. 전체를 뒤집으면 1110011이 됩니다. 2. 4번째 문자부터 5번째 문자까지 뒤집으면 111111이 되어서 두 번 만에 모두 같은 숫자로 만들 수 있습니다..
[곱하기 혹은 더하기 문제 설명] -난이도 : ★☆☆ -풀이시간 : 30분 -시간 제한 : 1초 -메모리 제한 : 128MB -기출 : Facebook 인터뷰 -출처 : 이것이 코딩 테스트다 p.312 -문제 : 각 자리의 숫자(0부터9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다. 예를들어 02984라는 문자열이 주어지면, 만들어질 수 있는 가장 큰 수는 576입니다. 또한 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정..