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
- Operating System
- 일상
- 알고리즘
- 토이프로젝트
- react
- 리덕스장바구니
- Redux
- react-redux
- 타입스크립트
- 정렬
- Java
- 분할메모리할당
- 자료구조
- 공부
- codeup
- C++
- 스프링
- Spring
- 파이썬
- 기초100제
- 협업
- 백준
- OS
- memory
- js to ts
- CPU 스케줄링
- 프로그래머스
- error
- web
- 코드업
Archives
- Today
- Total
감자튀김 공장🍟
[백준/2477] 참외밭 (with 파이썬) 본문
반응형
✔ 문제
✔ 풀이
import sys
input = sys.stdin.readline
k = int(input())
length, small = [], []
x, y = [], []
for i in range(6):
w, l = map(int, input().split())
length.append([w, l])
if length[i][0] == 1 or length[i][0] == 2: # 가로
x.append(length[i][1])
if length[i][0] == 3 or length[i][0] == 4: #세로
y.append(length[i][1])
for i in range(6): # 작은 사각형의 변 구하기
if length[i][0] == length[(i+2)%6][0]:
small.append(length[(i+1)%6][1])
print(((max(x) * max(y)) - (small[0] * small[1])) * k)
✔ 설명
전체 사각형에서 작은 사각형의 넓이를 빼면 된다.
전체 사각형의 크기는 입력 받은 변의 방향으로 구분할 수 있다. 1,2가 가로 3,4가 세로이므로 변의 방향으로 가로, 세로 배열에 각자 저장한다.
B의 변을 구하는 방법은 문제에서 입력받은 방향이 하나의 인덱스를 뛰어 넘고 또 나오면 그 중간의 인덱스가 가리키는 값이 B의 양 변이 된다.
예시 입력의 방향 값만 보면 (4, 2, 3, 1, 3, 1)이 되는데 (3, 1, 3, 1) 이 부분에서 중간 (1,3)의 값이 B의 양변임을 알 수 있다.
idx = 2의 3이 idx = 4의 3과 같을 경우, idx = 3의 길이를 small에 저장한다. (꺾이는 부분임을 찾고, 그 중간 값을 저장)
idx = 3의 1이 idx = 5의 1과 같을 경우, idx = 4의 길이를 small에 저장한다. (B의 x, y 저장 완료)
(%6을 하는 경우는 idx 값이 초과될 수 있으므로 나눠주는 것이다.)
✔ 후기
B의 길이를 구하는 부분에서 로직을 발견하지 못해서 다른 블로그들을 참고하고 풀어봤다.
과연 오늘 제정신이었다면 코드 참고 없이 로직을 발견할 수 있었을까..?
참고 코드
https://whitehairhan.tistory.com/281
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[백준/1002] 터렛 (with 파이썬) (0) | 2022.12.12 |
---|---|
[백준/3053] 택시 기하학 (with 파이썬) (0) | 2022.12.11 |
[백준/4153] 직각삼각형 (with 파이썬) (0) | 2022.12.09 |
[백준/3009] 네 번째 점 (with 파이썬) (0) | 2022.12.08 |
[백준/1085] 직사각형에서 탈출 (with 파이썬) (0) | 2022.12.07 |
Comments