목록BOJ (335)
기록방
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c42OUV/btrQr1H1oAJ/RXxQK0I6cNgi6kpg8pmXGK/img.png)
👉 문제링크 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net 🔸 문제 분석 🔸 나선 모양으로 커져가는 타일을 n개 배치했을때 만들어진 직사각형의 둘레를 출력한다. 3번째 타일 부터는 피보나치 수열 방식으로 증가한다. 🔸 코드 🔸 n = int(input()) arr = [1, 1] if n == 1: answer = 4 elif n == 2: answer = 6 else: for i in range(n-2): arr.append(sum(arr[-2:])) answer = arr[-1]*2 + sum(arr[-2:..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVfAlo/btrQrr1lbOI/nKxGPbgGenaRfHuwCkNIBK/img.png)
👉 문제링크 2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net 🔸 문제 분석 🔸 좌석 정보가 주어지면 컵 놓을 수 있는 사람의 최대값을 출력한다. 일반석과 커플석을 구분해 계산한다. 일반석은 왼쪽 컵홀더가 비었으면 무조건 왼쪽, 아니면 오른쪽에 놓는다. 따라서 무조건 컵을 배치할 수 있다. 커플석은 왼쪽과 오른쪽 구분이 필요하다. 커플석의 왼쪽 좌석은 왼쪽 컵홀더에 컵이 놓였는지 확인이 필요하다. 🔸 코드 🔸 n = int(input()) arr = list(input()) answer = 0 nextL = False left = True # 왼쪽 컵홀더 사용이 되는가 for i in arr[:-1]: if ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LPL1Q/btrQqlAgKi7/x0iKaocH0XPlsg06NZ1Prk/img.png)
👉 문제링크 4998번: 저금 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트는 한 줄로 이루어져 있고, N, B, M이 주어진다. M은 항상 N보다 크다. N과 M은 항상 백만보다 작거나 같은 수이고, 음수 또는 0이 아니다 www.acmicpc.net 🔸 문제 분석 🔸 입력이 끝날때까지 테스트 케이스를 입력받는다. 실수형 N, B, M 을 입력받는다. N이 몇 번 B%만큼 커져야 M을 넘는지 출력한다. 🔸 코드 🔸 import sys lines = sys.stdin.readlines() for line in lines: n, b, m = map(float,line.split()) count = 0 while n
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FoO6d/btrQj46qgXE/06vyKQZ4BAh1EUmffUIT1k/img.png)
👉 문제링크 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 🔸 문제 분석 🔸 일정 범위 안에서 최소값을 구하는 문제이므로 슬라이딩 윈도우와 정렬을 사용해야 한다. 윈도우의 크기는 최소값을 구하는 범위가 i-L+1 ~ i 이므로 L로 생각한다. 일반적으로 정렬은 O(nlogn)인데 N,L 의 범위가 5,000,000까지 이므로 정렬은 사용하지 못한다. O(n)의 시간 복잡도로 해결해야되므로 윈도우를 덱(deque)로 구현하여 정렬 효과를 낸다. 덱은 (인덱스, 숫자) 형태의 노드..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brU1mU/btrQkQssQMI/AscIrGIGz68wuIWlDk5VG1/img.png)
👉 문제링크 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 🔸 문제 분석 🔸 입력된 문자열 S에서 P 길이의 부분 문자열을 만들었을때, 입력된 DNA 문자열 최소 개수를 충족하는 경우의 수를 출력한다. 슬라이딩 윈도우 알고리즘을 이용해서 P길이의 부분 문자열을 문자열 S의 시작점부터 오른쪽으로 밀어간다. 윈도우에서 벗어나는 인덱스는 현재 상태에서 빼기 윈도우에 새로 들어오는 인덱스는 현재 상테에 더하기 조건에 충족 하는지 확인해서 카운트 🔸 코드 🔸 import java.io.Buffe..