Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- gemmasprint
- 수식 복원하기
- pcce 기출문제 10번 공원
- c++ 5567
- 고대 문명 유적 탐사
- DirectX12
- root signature
- 잔디 기부 캠페인
- pcce 기출문제 10번 지폐 접기 풀이
- depth-stencil
- 티스토리챌린지
- 백준 5567
- pccp 기출문제 풀이
- 렌더링 파이프
- 코드트리 고대 문명 유적 탐사
- python 고대 문명 유적 탐사
- directx 그래픽스
- 잔디 기부
- boj 1991
- pcce 기출문제 풀이
- pcce 기출문제 9번 지폐 접기
- PCCE
- c++ 1991
- texture mapping
- 오블완
- pcce 기출문제 10번 공원 풀이
- DirectX
- 프로그래밍공부
- boj 5567
- constant buffre
Archives
- Today
- Total
오구의코딩모험
[Python] 1059번 : 좋은 구간 본문
반응형
문제 설명이
복잡해보이지만 제한 조건과 예시를 보면
보다 쉽게 이해할 수 있다!
첫 줄은 집합 S의 크기,
두 번째 줄은 집합의 원소들,
세 번째 줄은 정수 n
따라서
크기가 4인 집합 S = [1, 7, 14, 10] 에서 2를 포함하는 좋은 구간을 구하라!
라고 해석할 수 있겠다.
좋은 구간의 원소들은
집합 S에 속하지 않으므로
[1,2]가 아닌 2부터 시작하고, A<B를 만족해야하기 때문에
[2,3] 부터 시작한다!
그럼
기본적인 입력 틀부터 작성
# 집합 S의 크기 L 입력
L = int(input())
S = []
# 집합에 포함될 정수 입력
idx = input()
answer = 0
if __name__ == '__main__' :
# 입력 받은 정수 집합 S에 삽입 및 정렬
for count in range(L):
index = idx.split()
S.append(int(index[count]))
S.sort()
# n 입력
n = int(input())
S의 원소들을 삽입한 후,
값을 오름차순으로 정렬하여 작은 값부터 비교해볼 것이다!
i = 0
# 집합 S와 n 비교
for i, compare in enumerate(S):
# n이 집합 s의 원소와 같다면, 좋은 구간은 없다.
if compare == n:
print(answer)
break
# 제한 : n <= 집합 S에서 가장 큰 정수
if compare > n:
break
정수 n이 집합 S의 원소 중 하나와 같다면
좋은 구간은 만들어질 수 없으므로 0을 반환!
S의 i번째 원소가 n보다 커지는 순간 반복문을 멈추고
좋은 구간을 찾아보자!
# n이 집합 S의 원소 사이에 있을 때 == 좋은 구간이 존재할 때
if i != 0:
if S[i] != n :
# S[i-1] < n < S[i]인 경우
if (n - S[i-1]) == 1:
print(1*(S[i]-n-1))
else :
print((n-S[i-1])*(S[i]-n)-1)
# 1 <= n < S[0] 인 경우
if S[0] > n :
if n == 1:
print(1*(S[0]-n)-1)
else :
print(n*(S[0]-n)-1)
좋은 구간이 존재하는 경우에서
1. n이 원소 사이에 끼어 있는 경우
2. n이 1과 원소 사이에 끼어 있는 경우
두 가지 경우를 고려해줘야한다!
2번을 고려하지 않아
채점 과정 중에 몇 번 틀렸다..
좋은 구간의 개수는
앞서 했던 예시와 같이 경우의 수와
정수 n과 원소 사이의 차이만큼 곱해주는 방식으로 구하였다!
ex)
14 와 20 사이에 정수는 몇 개?
(20-14) -1 = 5개
결과
짜잔
반응형
'프로그래밍 공부 > 백준 알고리즘' 카테고리의 다른 글
[Python] 1003번 : 피보나치 함수 (0) | 2023.02.12 |
---|---|
[Python] 1002번 : 터렛 (0) | 2022.08.08 |
[Python] 1018번 : 체스판 다시 칠하기 (0) | 2022.08.07 |
[Python] 1015번 : 수열 정렬 (0) | 2022.08.06 |
[Python] 1010번 : 다리 놓기 (0) | 2022.08.05 |
Comments