목차 누적 합 [Java+Python]11659번, 구간 합 구하기 4 [Java+Python]2559번, 수열 [Java+Python]10986번, 나머지 합 [Java+Python]11660번, 구간 합 구하기 5 [Java+Python]25682번, 체스판 다시 칠하기 2 문제 승재는 인간-컴퓨터 상호작용에서 생체공학 설계를 공부하다가 키보드 자판이 실용적인지 궁금해졌다. 이를 알아보기 위해 승재는 다음과 같은 생각을 했다. '문자열에서 특정 알파벳이 몇 번 나타나는지 알아봐서 자주 나타나는 알파벳이 중지나 검지 위치에 오는 알파벳인지 확인하면 실용적인지 확인할 수 있을 것이다.' 승재를 도와 특정 문자열 $S$, 특정 알파벳 $\alpha$와 문자열의 구간 $[l, r]$이 주어지면 $S$의 $l..
목차 누적 합 [Java+Python]11659번, 구간 합 구하기 4 [Java+Python]2559번, 수열 [Java+Python]16139번, 인간-컴퓨터 상호작용 [Java+Python]10986번, 나머지 합 [Java+Python]11660번, 구간 합 구하기 5 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 K×K 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은 다른 색으로 칠해져 있어야 한다. 따라서 ..
목차 누적 합 [Java+Python]11659번, 구간 합 구하기 4 [Java+Python]2559번, 수열 [Java+Python]16139번, 인간-컴퓨터 상호작용 [Java+Python]11660번, 구간 합 구하기 5 [Java+Python]25682번, 체스판 다시 칠하기 2 문제 수 $N$개 $A_1, A_2, ..., A_N$이 주어진다. 이때, 연속된 부분 구간의 합이 $M$으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, $A_i + ... + A_j (i ≤ j)$ 의 합이 $M$으로 나누어 떨어지는 $(i, j)$ 쌍의 개수를 구해야 한다. 입력 첫째 줄에 $N$과 $M$이 주어진다. $(1 ≤ N ≤ 106, 2 ≤ M ≤ 103)$ 둘째 줄에 $N$개의 수..
목차 문제 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루어진 정사각형 판 위에서 이뤄지는데, 게임 시작 전 일부 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다. 나머지 빈칸을 채우는 방식은 다음과 같다. 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 위의 예의 경우, 첫째 줄에는 1을 제외한 나머지 2부터 9까지의 숫자들이 이미 나타나 있으므로 첫째 줄 빈칸에는 1이 들어가야 한다. 또한 위쪽 가운데 위치한 3x3 정사각형..
목차 누적 합 [Java+Python]11659번, 구간 합 구하기 4 [Java+Python]16139번, 인간-컴퓨터 상호작용 [Java+Python]10986번, 나머지 합 [Java+Python]11660번, 구간 합 구하기 5 [Java+Python]25682번, 체스판 다시 칠하기 2 문제 매일 아침 9시에 학교에서 측정한 온도가 어떤 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 알아보고자 한다. 예를 들어, 아래와 같이 10일 간의 온도가 주어졌을 때, 3 -2 -4 -9 0 3 7 13 8 -3 모든 연속적인 이틀간의 온도의 합은 아래와 같다. 이때, 온도의 합이 가장 큰 값은 21이다. 또 다른 예로 위와 같은 온도가 주어졌을 때, 모든 연속적인 5일 간의..
목차 누적 합 [Java+Python]2559번, 수열 [Java+Python]16139번, 인간-컴퓨터 상호작용 [Java+Python]10986번, 나머지 합 [Java+Python]11660번, 구간 합 구하기 5 [Java+Python]25682번, 체스판 다시 칠하기 2 문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 풀이 구간 합, 혹은 누적 합을..
문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열) 문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. 풀이 조금 헷갈려서 시간이 들었지만, 흔하고(?) 유명한 동적계획법 문제이다. 먼저 두 문자열 n, m을 입력받고 (n.length + 1)(mlength + 1)크기의 이중 배열을 memo를 생성한다. 이어서 이중 반복문을 순회하며 n.charAt(i - 1..
문제 효주는 포도주 시식회에 갔다. 그곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램을 작성하시오. 예를 들어 6..
문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 풀이 반복되는 동적계획법 문제이다. 계속 풀다 보니 동적계획법은 계획을 세우는 자체보다 경계선을 올바로 잡는 게 중요하다는 생각이 든다. 아니 어쩌면 경계선을 잡는 것 자체가 계획의 전부인지도. 우선 입력으로 주어지는 n을 받아 이차원 배열 memo를 선언했다. 그리고 0을 제외한 memo[1]의 요소를 1로 초기화했는데,..
문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 풀이 조금씩 난이도가 오르는 동적계획법 문제다. 하지만 기본적인 접근 방식은 다를 것이 없어서, 어느 연산을 어떤 식으로 배치하는 지만 정해주면 되는 문제. 우선 주어진 수보다 1이 더 큰 길이를 가진 memo 배열을 선언한다. 그리고 memo[1]에는 초기값으로 0을 입력..
- Total
- Today
- Yesterday
- 맛집
- 여행
- 중남미
- 칼이사
- BOJ
- Python
- Algorithm
- 세계여행
- 백준
- 알고리즘
- Backjoon
- 면접 준비
- 기술면접
- 파이썬
- 세모
- 리스트
- RX100M5
- 스프링
- a6000
- 세계일주
- 유럽여행
- 지지
- 스트림
- 남미
- spring
- 동적계획법
- java
- 야경
- 유럽
- 자바
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |