Level 2. 카펫
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 통과
2. 통과 코드
3. 문제 해석
가로의 길이가 세로의 길이보다 크거나 같다. (직사각형 또는 정사각형)
가장 바깥쪽만 갈색이다. (첫번째 사진의 4 X 3인 직사각형을 보면 가장 바깥쪽만 갈색이다.)
나머지는 노란색이다.
갈색의 수와 노란색의 수가 주어진다.
그러므로 주어진 갈색의 수와 노란색의 수를 역산하여 가로, 세로 길이를 구한다.
4. 풀이
(1) 갈색의 수 = brown, 노란색의 수 = yellow
(2) 가로의 길이 = i, 세로의 길이 = j
(3) brown = 2 * (i + j) -4
yellow = (i - 2) * (j - 2)
두 가지 식을 도출 할 수 있다.
왜냐하면 가로의 길이가 세로의 길이보다 크거나 같은 직사각형 또는 정사각형 이고,
가장 바깥쪽만 갈색이기 때문이다.
좀 더 풀어서 설명하면 갈색의 수 = (가로길이 * 2) + (세로길이 - 2) * 2 이다.
노란색의 수 = (가로길이 - 2) * (세로길이 - 2) 이다.
(4) 두 개의 식을 모두 만족하는 i와 j를 2중 for문으로 찾는다.
(5) 만족하는 i와 j를 찾으면 cnt를 증가시켜 2중 for문을 종료한다.
(6) 가로길이가 세로길이보다 크거나 같아야 하니 Math라이브러리를 사용한다.
(7) 가로길이와 세로길이를 배열에 담아 반환한다.
'공부해 codingTest' 카테고리의 다른 글
프로그래머스 JAVA Level 1. 카드 뭉치 (0) | 2023.03.12 |
---|---|
프로그래머스 JAVA Level 1. [1차] 다트 게임 (0) | 2023.03.10 |
프로그래머스 JAVA Level 1. 체육복 (0) | 2023.02.18 |
프로그래머스 JAVA Level 1. 완주하지 못한 선수 (0) | 2023.02.14 |
프로그래머스 JAVA Level 1. 로또의 최고 순위와 최저 순위 (0) | 2023.02.13 |