목록Problem Solving/BOJ (18)
러닝머신 하는 K-공대생
20127번: Y-수열 N개의 정수로 이루어진 수열 a1, ... , aN이 있다. 택희는 해당 수열이 증가수열 혹은 감소수열이 되게 만들고 싶다. 증가수열은 모든 i(1 ≤ i arr[i] 가 나올 때까지를 k를 1부터 증가시키고 arr[i-1] <..
11056번: 두 부분 문자열 첫째 줄에 문자열 A, 둘째 줄에 문자열 B가 주어진다. 두 문자열은 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 이 문제는 정말 모를때는 혼자 풀어보겠다고 몇시간을 투자하기 보다는 풀이를 찾아서 접근 방안과 새로운 이론이 필요하다면 그 이론을 공부할 필요가 있음을 알려주었다. 아직 기본적인 알고리즘과 자료구조에 대해 공부해야 할 점이 많다. 문제에서 원하는 부분 문자열은 subsequence(연속적이지는 않은 부분 문자열) 인데 나는 substring(연속적인 부분 문자열) 으로 잘못 이해해서 부분 문자열을 substring으로 생각한 경우에 다음과 같이 코드를 짰다. A = input() B = input() s,l = (A..
1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 뭔가 그리디 문제 같아서 처음에는 다음과 같이 접근했다. n = 42798, 고장난 버튼 = [1,3,5,6,7,9] 라고 했을 때 42까지는 그대로 사용하고 그 뒤가 800 혹은 488인 경우가 있을텐데 여기서 단순히 +,- 해서 누른 버튼의 수의 최소를 구하고자 하였다. 좀 복잡하게 구현하긴 했지만 문제에 있는 test case는 잘 작동했으나 제출해봤을 땐 실패했다. n = input() m = int(input()) broken_butto..
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개이어야 하므..