피자 나눠 먹기 (1)
class Solution {
public int solution(int n) {
int result=0;
if(n<8){
result=1;
}else if(n%7==0){
result=n/7;
}else if(n%7>0){
if(n<8){
result=1;
}else{
result=(n/7)+1;
}
}
return result;
}
}
이제 코드를 세부적으로 알아보자.
<인원수가 피자조각 수(=8) 보다 작을 경우>
if(n<8){
result=1;
}
모든 사람이 한 조각씩만 먹으면 되기 때문에 무조건 1을 반환하게 하였다.
<피자조각 수로 인원수가 딱! 나누어 떨어질 경우>
else if(n%7==0){
result=n/7;
}
나머지가 0이 되게 하는 수를 반환하게 하였다.
<피자 조각수가 인원수로 나눠떨어지지 않을 경우>
else if(n%7>0){
if(n<8){
result=1;
}else{
result=(n/7)+1;
}
이 부분이 조금 고역이었는데 처음에는 나머지가 0보다 클 경우의 if 문만 작성했었다.
그런데 계속 결과값이 다르게 출력되었다.
알고보니 8 이하의 숫자가 첫 번째 조건문에서만 빠지는게 아니라 나머지가 0이상인 경우에도 해당되어 이 조건문에서도 들어가게 되는 것이었다.............
그래서 이 조건문 안에 또 조건문을 넣어 8보다 작을 경우와 아닐 경우로 나눠서 식을 다시 작성했더니 제대로 답이나왔다!!!!
피자 나눠 먹기 (2)
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= 6 * n; i++) {
if (6 * i % n == 0) {
answer = i;
break;
}
}
return answer;
}
}
처음에 어떻게 풀어야 할지 감이 안와서 if문 안에 if문 넣고 for문 넣고 식이 엄청 길어졌었다.
자꾸 인원수가 피자조각 수보다 작을 경우, 클 경우 이런식으로 분리해서 생각했는데,
for (int i = 1; i <= 6 * n; i++) {
if (6 * i % n == 0) {
answer = i;
break;
}
}
피자 조각 수와 피자 판 수를 한꺼번에 곱하여 전체 피자 조각수를 구한 뒤 인원수로 나누기만 하면 생각보다 간단하게 풀리는 문제 였다.
6 * i = 피자 조각 수*피자 판 수 -> 총 피자 조각 수의 합
다 먹고 남은 피자 조각이 없어야 한다고 했기 때문에
총 피자 조각 수의 합을 인원수로 나눈 경우 나머지가 0이 나오면 식이 성립한다!!
피자 나눠 먹기 (3)
class Solution {
public int solution(int slice, int n) {
int result =0;
if(n<slice){
result =1;
}else if(n%slice==0){
result =n/slice;
}else if(n%slice>0){
result =(n/slice)+1;
}
return result;
}
}
첫 번째 문제와 거의 동일한 문제로 첫 문제에서는 조각 수를 정해줬다면 여기서는 조각수를 정해주지 않았을 뿐이다.
따라서 첫 번째 문제에서 조각 수 부분만 slice 로 대체해주어 프로그램에서 알아서 입력하여 답을 도출하도록 우리는 식만 작성해주면 된다!!!
'Java' 카테고리의 다른 글
[자바]String Buffer와 String Builder 그리고 Date (0) | 2023.10.16 |
---|---|
[자바] StringTokenizer와 Replace (0) | 2023.10.16 |
[자바] 코딩문제 풀기!!!! (0) | 2023.09.14 |
[자바] 필독!!!!!귀여운 레서판다 무한 복제 버그 (0) | 2023.09.14 |
[자바] 즐거운 폴더랑 파일 만들기 (0) | 2023.09.14 |