-
[코딩테스트] - 카펫 LV2 - ( 프로그래머스(programmers) / java )👍programmers 2023. 7. 24. 10:26728x90반응형
안녕하세요 나홀로전세집입니다.
오늘의 문제는 카펫 입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
school.programmers.co.kr
문제 설명
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
레오가 기억하는 카펫의 크기를 구해주는 문제입니다.
테두리 부분은 brown으로 되어있으며, 테두리 안쪽 부분은 모두 yellow 가 되는 것 입니다.
오늘의 문제풀이 변수입니다.
int[] answer = new int[2]; int yellow_Width; int yellow_Length
값을 return해줄 answer과 yellow의 가로, 세로 변수 yellow_Width와 yellow_Length를 선언해줬습니다.
다은은 알고리즘입니다.
for (int yellow_Length = 1; yellow_Length <= yellow / 2 + 1; yellow_Length++) { if (yellow % yellow_Length == 0) { yellow_Width = yellow / yellow_Length; if ((2 * yellow_Length + 2 * yellow_Width + 4 == brown) && (yellow_Length >= yellow_Width)) { answer[0] = yellow_Length + 2; answer[1] = yellow_Width + 2; return answer; } } }
for문에서 노란색의 세로 값을 구해줍니다.
첫 번째 if 문에서 구한 것은 노란색의 가로, 세로 값입니다. 노란색의 넓이를 노란색의 세로로 나눴을 때 나머지 값이 0이면 그 값은 노란색의 가로가 될 수 있는 값입니다.
두 번째 if문에서 구하는 것은 카펫의 가로 세로 값 입니다. 노란색의 세로와 가로를 이용해 카펫의 테두리를 구하고, 테두리 값이 브라운의 값과 같을 때 그 테두리 값을 return 해주는 알고리즘입니다.
(브라운의 갯수 = 노란색의 테두리를 더한 값 + 4 (4는 모서리 네 부분))
코딩 테스트를 자주 풀어보니 이 문제는 보고 20분 안에 풀 수 있게 되었습니다. 코딩 테스트는 여러번 반복하여 푸는 것이 중요한 것 같습니다.
.
전체코드
class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int yellow_Width; for (int yellow_Length = 1; yellow_Length <= yellow / 2 + 1; yellow_Length++) { if (yellow % yellow_Length == 0) { yellow_Width = yellow / yellow_Length; if ((2 * yellow_Length + 2 * yellow_Width + 4 == brown) && (yellow_Length >= yellow_Width)) { answer[0] = yellow_Length + 2; answer[1] = yellow_Width + 2; return answer; } } } return answer; } }
오늘도 즐코딩 하시고 좋은 하루 되세요~
728x90반응형'programmers' 카테고리의 다른 글
[코딩테스트] - 단어 변환 LV3 ( 프로그래머스(programmers) / java )👍 (2) 2023.07.25 [코딩테스트] - 타겟 넘버 LV2 - ( 프로그래머스(programmers) / java )👍 (3) 2023.07.25 [코딩테스트] - 최솟값 만들기 LV2 ( 프로그래머스(programmers) / java )👍 (1) 2023.07.18 [코딩테스트] - 주식 가격 LV2 ( 프로그래머스(programmers) / java )👍 (4) 2023.07.18 [코딩테스트] - 올바른 괄호 LV2 ( 프로그래머스(programmers) / java )👍 (1) 2023.07.17