목록Problem Solving (19)
러닝머신 하는 K-공대생

1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 간단한 아이디어 문제. 큰 수부터 아래와 같이 표에 채워넣으면 쉽다. arr = [5 3 2 2 0 0] 이란 정보가 주어지면, 먼저 6을 추가한다. 6 5를 추가한다. 6 5 5보다 큰 수가 0개이어야 하므로 0번째 index에 5를 끼어넣자. 5 6 4를 추가한다 5 6 4 3을 추가한다. 5 6 4 3 3보다 큰 수가 2개 이어야 하므로 2번째 index 뒤에 끼워넣자. 5 6 3 4 2를 추가한다. 5 6 3 4 2 2보다 큰 수가 3개이어야 하므..

9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 이 문제를 봤을 때 단순 DP 문제인 것 같아서, 관찰을 해보았다. 스티커를 뗀 부분을 동그라미, 같이 떼어진 부분을 세모라고 한다면(동그라미에 주목) 다음과 같이 i-1번째의 열에서 스티커를 뗀 경우(case1)과 i-1번째에서 스티커를 떼지 않은 경우(case2)로 나누어볼 수 있었다. 이때 i-1번째에서 스티커를 땔 때는 i-1번째 열에서 위에 있는 스티커를 떼었는지 아니면 아래있는 스티커를 떼었는지에 따라 i번째 열에서 뗄 스티커가 결정되고, ..

6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 간단한 구현문제여서 브루트포스로 풀 수 있을 것 같았는데, 1 ≤ M, N ≤ 40,000 이므로 day를 1~MN까지 확인하는 solve() 처럼 풀면 시간초과가 뜬다. 시간초과를 해결하기 위해 다른 색다른 알고리즘이 필요한 것이 아니라 단지 수식적으로 확인해서 day를 특정하면 된다. 그리고 이 과정에서 solve() 풀이에서 처럼 직접 구현하지 않더라도 모듈러 연산으로 성립조건을 간단히 알아낼 수 있다. day1 = mk_1 + x ,day2 = nk_2 + ..