[프로그래머스] 42842 카펫

최대 1 분 소요

프로그래머스 level2

문제


문제 풀이

Java (20.03.25)


Javascript (21.05.06)

문제 리뷰

주어진 brown, red 칸의 개수를 보고 카펫의 가로, 세로 길이를 구하는 문제이다.

입출력 예를 보면
brown + red = 가로 x 세로
임을 알 수 있다.

  • 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.

이 부분에 주목해야한다.
세로 길이는 가로 길이 이하이기 때문에
가로 길이를 중심으로 증가시키면서 세로 길이를 가로 길이 이하까지 비교해주었다.
그리고 위에서 언급했던 brown과 red의 합이 직사각형의 넓이가 되면
그 때의 가로, 세로 값이 정답이라고 판별했다.
하지만 4, 6, 7번 테스트 케이스를 통과하지 못했다..

다른 분들의 풀이를 참고해보니 몇가지 체크해야할 조건이 더있었다.
여러 측면의 조건이 있었지만 내가 이해가 갔던 조건은
red = (가로 - 2) * (세로 - 2)

문제의 카펫을 보면 알겠지만 brown이 red를 감싸는 모양새이기 때문에
red가 가로, 세로의 길이는 전체 가로, 세로 길이보다 2씩 작을 수 밖에 없다.

그래서 2개의 조건이 일치할 때, 반복문을 탈출해줬더니
모든 테스트 케이스를 통과할 수 있었다.

TMI

이중 반복문과 flag 변수를 사용한 구조라
효율적인 코드는 아니지만 내가 이해하는 선에서 풀이했다..
더 노력하자!

1일 1알고리즘 완료🤓

댓글남기기