Swift 코딩테스트/Swift 백준 문제 풀이
[Swift 코테] 백준 2477 참외밭
ㄱ ㅅ ㄱ
2022. 7. 17. 18:19
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