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 |
Tags
- 개발입문
- 제어구조
- Algorithm
- Codeup
- 기초프로그래밍
- c#
- 알고리즘
- SWEA
- Literal
- 디자인패턴
- 코드업100제자바
- 자바
- 리터럴
- 프로그래머스파이썬
- 백준
- 코드업
- 자바클래스
- SWEA파이썬
- 사용자입력
- Java
- 코딩테스트
- VARIABLE
- C#변수
- 수학연산
- 변수
- 코드업100제
- 백준파이썬
- 자바연산자
- 코드업자바
- C#프로그래밍
Archives
- Today
- Total
제니노트
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (python) 본문
반응형
1) [SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (python)
문제 출처 :
https://swexpertacademy.com/main/solvingProblem/solvingProblem.do
2) 문제
SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
강변에 빌딩들이 옆으로 빽빽하게 밀집한 지역이 있다.
이곳에서는 빌딩들이 너무 좌우로 밀집하여, 강에 대한 조망은 모든 세대에서 좋지만 왼쪽 또는 오른쪽 창문을 열었을 때 바로 앞에 옆 건물이 보이는 경우가 허다하였다.
그래서 이 지역에서는 왼쪽과 오른쪽으로 창문을 열었을 때, 양쪽 모두 거리 2 이상의 공간이 확보될 때 조망권이 확보된다고 말한다.
빌딩들에 대한 정보가 주어질 때, 조망권이 확보된 세대의 수를 반환하는 프로그램을 작성하시오.
아래와 같이 강변에 8채의 빌딩이 있을 때, 연두색으로 색칠된 여섯 세대에서는 좌우로 2칸 이상의 공백이 존재하므로 조망권이 확보된다. 따라서 답은 6이 된다.

A와 B로 표시된 세대의 경우는 왼쪽 조망은 2칸 이상 확보가 되었지만 오른쪽 조망은 한 칸 밖에 확보가 되지 않으므로 조망권을 확보하지 못하였다.
C의 경우는 반대로 오른쪽 조망은 2칸이 확보가 되었지만 왼쪽 조망이 한 칸 밖에 확보되지 않았다.
[제약 사항]
가로 길이는 항상 1000이하로 주어진다.
맨 왼쪽 두 칸과 맨 오른쪽 두 칸에는 건물이 지어지지 않는다. (예시에서 빨간색 땅 부분)
각 빌딩의 높이는 최대 255이다.
좌우 2칸 최댓값을 구해서 내 높이 > 최댓값 일 케이스에서 각 차이를 누적하면된다
3)소스 코드
import sys
sys.stdin = open("input.txt", "r")
T = 10 #테스트 케이스가 10개이므로
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
n = int(input())
lst=list(map(int,input().split()))
ans = 0
#좌우 2개 최대값 찾기
for i in range(2,n-2) : #인덱스 2번부터
max=lst[i-2] #초기값, 더큰값오면 갱신됨
for j in range(i-1,i+3) :
if j == i :
continue #자기자신은 제외
else :
if max<lst[j] :
max =lst[j]
if lst[i] > max :
ans+=lst[i] - max # 값 누적
print(f'#{test_case} {ans}')
T = 10 #테스트 케이스가 10개이므로
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
n = int(input())
lst=list(map(int,input().split()))
ans = 0
#좌우 2개 최대값 찾기
for i in range(2,n-2):#인덱스 2번부터
mx = max(lst[i-2:i]+lst[i+1:i+3]) #슬라이싱 결과로 작업
if lst[i]>mx :
ans+=lst[i]-mx # 값 누적함
print(f'#{test_case} {ans}')
반응형
'코딩테스트 > SWEA' 카테고리의 다른 글
[SWEA] 1224. [S/W 문제해결 기본] 6일차 - 계산기3 (python) (1) | 2023.07.19 |
---|---|
[SWEA]1226. [S/W 문제해결 기본] 7일차 - 미로1 (python) (0) | 2023.07.06 |
[SWEA] 1234. [S/W 문제해결 기본] 10일차 - 비밀번호 (python) (0) | 2023.06.23 |
[SWEA] 1223. [S/W 문제해결 기본] 6일차 - 계산기2 (python) (0) | 2023.06.10 |
[SWEA] 1218. [S/W 문제해결 기본] 4일차 - 괄호 짝짓기 (python) (0) | 2023.06.06 |
Comments