[Swift 코테] 백준 2477 참외밭
2022. 7. 17. 18:19ㆍSwift 코딩테스트/Swift 백준 문제 풀이
728x90
큰 사각형 - 작은 사각형의 문제다.
문제점은 작은 사각형을 어떻게 구하는지
- 작은 사각형의 변은 큰 사각형의 변과 인접하지 않는다.
- 큰 사각형의 가로 변(160)에 인접한 변은 세로변들(30, 50)
세로 변(50)에 인접한 변은 가로변들(160, 100)
- 세로변들 차의 절대값(30 - 50)은 작은 사각형의 세로 변 길이(20)
- 가로변들 차의 절대값(160, 100)은 작은 사각형의 가로 변 길이(60)
- 작은 사각형변 길이(20) X 세로 사각형 변 길이(60) = 작은 사각형 넓이(1200)
//코드
import Foundation
let num = Int(readLine()!)!
var LV = 0; var LH = 0
var VIdx = 0; var HIdx = 0
var input = [[Int]]()
for i in 0...5{
var tmp = readLine()!.split(separator: " ").map{Int($0)!}
//큰 사각형 변 길이 찾기
switch tmp[0]{
case 1, 2: //가로
if tmp[1] > LH{
LH = tmp[1]
HIdx = i
}
case 3, 4: //세로
if tmp[1] > LV{
LV = tmp[1]
VIdx = i
}
default:
break
}
input.append(tmp)
}
//큰 사각형 넓이 L
let L = LV * LH
//큰 사각형 변의 인덱스가 0일때 -1을 하면 에러가 생기기 때문에 6(=0)으로 변경한 후 계산
if VIdx == 0{ VIdx = 6 }
if HIdx == 0 { HIdx = 6}
//+-1을 하는 이유는 인접한 변들로 계산을 하기 위해
var S1 = abs(input[(VIdx - 1) % 6][1] - input[(VIdx + 1) % 6][1])
var S2 = abs(input[(HIdx - 1) % 6][1] - input[(HIdx + 1) % 6][1])
let S = S1 * S2
print((L - S) * num)
728x90
'Swift 코딩테스트 > Swift 백준 문제 풀이' 카테고리의 다른 글
[Swift 코테] 백준 2609 최대공약수와 최소공배수 (0) | 2022.07.27 |
---|---|
[Swift 코테] 백준 1004 어린왕자 (0) | 2022.07.19 |
[Swift 코테] 백준 2108 통계학 (0) | 2022.06.02 |
[Swift 코테] 백준 10872 팩토리얼 (0) | 2022.04.26 |
[Swift 코테] 백준 1002 터렛 (0) | 2022.04.25 |