728x90
풀이
/**
* 설명
* - 프로그래머스 > 고득점 kit > 완전탐색 > level2 > 카펫
* - 경로 : https://school.programmers.co.kr/learn/courses/30/lessons/43238
*
* */
class Carpet {
fun solution(brown: Int, yellow: Int): IntArray{
/**
* 로직설명
* - 내부 사각형(노랑타일)의 가로길이를 w, 세로길이를 h 라고 하자.
*
* - #1 첫번째 조건
* -- 2w + 2h + 4(꼭지점 타일 갯수) = brown
*
* - #2 두번째 조건
* -- w*h = yellow
*
* */
// 2w + 2h + 4 = brown
// w * h = yellow
var yellowWidth = 0
var yellowHeight = 0
var yellowSurfaceAreaArray: IntArray? = null
var result: IntArray? = null
val scaledBrown = (brown - 4)/2
val firstCondMutableList = mutableListOf<IntArray>()
for(width in scaledBrown/2..scaledBrown){
yellowWidth = width
yellowHeight = scaledBrown - width
if(yellowWidth+yellowHeight == scaledBrown){
if(yellowHeight<=yellowWidth){
firstCondMutableList.add(intArrayOf(yellowWidth, yellowHeight))
}
}
}
for(firstCondEle in firstCondMutableList){
if(firstCondEle[0] * firstCondEle[1] == yellow){
yellowSurfaceAreaArray = firstCondEle
break
}
}
if(yellowSurfaceAreaArray == null){
// 정답이 없다?
return intArrayOf()
}
else{
yellowWidth = yellowSurfaceAreaArray[0] + 2
yellowHeight = yellowSurfaceAreaArray[1] + 2
result = intArrayOf(yellowWidth, yellowHeight)
println(result.toList())
return intArrayOf(yellowWidth, yellowHeight)
}
}
}
출처
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이 코드
GitHub - sggnology/programmers-algorithm: 프로그래머스 알고리즘 코드 정리입니다.
프로그래머스 알고리즘 코드 정리입니다. Contribute to sggnology/programmers-algorithm development by creating an account on GitHub.
github.com
728x90
'Algorithm > Programmers' 카테고리의 다른 글
Programmers 동적계획법 :: 레벨3 :: N 으로 표현 (0) | 2022.07.26 |
---|---|
Programmers DFS/BFS :: 레벨 2 :: 게임 맵 최단거리 (0) | 2022.07.20 |
Programmers 이분탐색 :: 레벨3 :: 입국심사 (0) | 2022.07.14 |
Programmers 스택/큐::레벨2::프린터 (0) | 2022.04.08 |
Programmers :: 해시 전화 번호 목록 레벨2 (0) | 2022.03.26 |