일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- SQL개발자시험
- 코딩역량인증시험
- java
- DB
- 알고리즘
- JPAdata
- 정보처리기사기출
- 코테
- 2023년회고
- 정보처리기사대비
- 개발자
- programmers
- springboot3
- Oracle
- 정보처리기사
- 프로그래머스자바
- PCCP
- python
- PCSQL
- 자바
- PCCE
- 프로그래머스
- 자바알고리즘
- JavaPersistenceApi
- sql
- JAVA.
- 코딩테스트
- SQL개발
- 정처기
- 2024년정보처리기사
Archives
- Today
- Total
똘이의 개발 Life
[ 프로그래머스 JAVA ] 카펫 본문
728x90
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/42842
걸린 시간
08:37 ~08:45 , 08:52 ~ 09:20 // 소요 시간 36분
피드백
없음.
문제
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한 사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다
예시
brown | yellow | return |
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
수도코드
없음
소스 코드 ( 자세한 내용 주석 참고 )
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
// yellow 개수를 기준으로 brown 개수를 예상할 수 있음.
// ex) yellow 가 24개이면
// | 24 , 1 | 12 , 2 | 8 , 3 | 6 , 4 |
// | 26 , 3 | 14 , 4 | 10 , 5| 8 , 6 |
// 이런식으로 케이스를 나눠서 생각 가능.
int x = 0; // 가로
int y = 0; // 세로
for( int i = 1; i <= yellow ; i ++ ){
// x * y = yellow 로 표현 못하는 케이스는 버림 ( 가로 세로는 정수다. )
// 가로가 더 길기 때문에 i 제곱이 yellow 보다 크지 못함
if( yellow % i != 0 || Math.pow( i , 2 ) > yellow ){
continue;
}
// x , y 지정
x = yellow / i; // 가로
y = i; // 세로
// 브라운은 옐로우의 x 길이 + 2 와 y의 길이 +2 를 곱한것에 yellow 를 뺀 것과 같다.
// 같으면 x+2 , y+2 제출
if( brown == ( (x + 2) * ( y + 2 ) - yellow ) ) {
answer[0] = x+2;
answer[1] = y+2;
}
}
return answer;
}
}
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 JAVA ] 점프와 순간 이동 (0) | 2024.01.18 |
---|---|
[ 프로그래머스 JAVA ] 영어 끝말 잇기 (0) | 2024.01.18 |
[ 프로그래머스 JAVA ] 짝지어 제거하기 (0) | 2024.01.17 |
[ 프로그래머스 JAVA ] 피보나치 수 (0) | 2024.01.17 |
[ 프로그래머스 JAVA ] 다음 큰 숫자 (0) | 2024.01.16 |