준영이의 성장일기(FrontEnd)
프로그래머스 - 카펫 본문
<문제>
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<문제 핵심>
1. 문제 분류는 '완전 탐색' 문제 이고 문제에서 요구하는 규칙성을 찾는 문제 였다.
2. 예시 그림 3행 4열 그림을 보고 최소 높이가 3임을 파악했어야 함
<문제 풀이과정 및 순서도>
1. 매개변수로 주어진 brown과 yellow를 합쳐서 newCount 변수를 만든다.
let answer = [];
let newCount = brown + yellow;
2. 최소 높이인 3부터 반복문을 돌리며 newCount에서 임의의 높이를 나눠주고 그때의 가로, 세로 길이를 구한다.
✅ 테두리를 제외해야 하기 때문에 가로,세로에 각각 -2씩 적용해주고 서로 곱해서 결과적으로 노랑색의 갯수를 구한다.
✅ 루프를 다 돌았지만 조건을 만족하는 weight, height를 찾지 못했을 때는 빈 배열인 answer를 return 한다.
for(let height=3; height<=brown; height++){
//임의의 높이로 나눌때 나머지가 없을경우만
if(newCount % height === 0) {
//가로길이
let weight = newCount / height;
//테두리를 제외한 길이를 구해야하기 때문에 각각 -2해준뒤 곱셈
//결과가 yellow와 같다면 해당 높이와 길이 리턴
if( (height-2) * (weight-2) === yellow){
return [weight, height];
}
}
}
return answer;
<전체 코드>
function solution(brown, yellow) {
let answer = [];
let newCount = brown + yellow;
for(let height=3; height<=brown; height++){
//임의의 높이로 나눌때 나머지가 없을 경우
if(newCount % height === 0){
//가로길이
let weight = newCount / height;
//테두리를 제외한 길이를 구해야하기 때문에 각각 -2해준뒤 곱해주기
//결과가 yellow와 같다면 해당 높이와 길이 리턴
if( (height-2) * (weight-2) === yellow){
return [weight, height];
}
}
}
return answer;
}
'코테 및 알고리즘' 카테고리의 다른 글
백준 js 15649번 (0) | 2024.06.29 |
---|---|
프로그래머스 - 2020년 카카오 인턴십 키 패드 누르기 (0) | 2024.06.28 |
프로그래머스 - 더 맵게 (0) | 2024.06.27 |
백준 1436번 - 영화감독 숌 (0) | 2024.06.25 |
프로그래머스 - 소수 찾기 (0) | 2024.06.24 |