요일을 입력받아 해당 요일의 다음 요일을 리턴해야하는 문제였다.
인자는 day를 받으며 "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"을 활용하여
해당 요일이 "월요일"이라면 "화요일"이 리턴 될 수 있도록 요구하는 문제였다.
올바른 요일이 아닌 경우에는 "올바른 요일이 아닙니다"를 리턴한다.
public class main {
public String followingDay(String day) {
// TODO:
}
}
가장 처음 들었던 생각은 if문으로 7번 작성하면 될 것이라고 생각했다.
다음과 같이 말이다.
public class Solution {
public String followingDay(String day) {
if (day.equals("월요일")){
return "화요일";
} else if (day.equals("화요일")) {
return "수요일";
} else if (day.equals("수요일")) {
return "목요일";
} else if (day.equals("목요일")) {
return "금요일";
} else if (day.equals("금요일")) {
return "토요일";
} else if (day.equals("토요일")) {
return "일요일";
} else if (day.equals("일요일")) {
return "월요일";
} else {
return "올바른 요일이 아닙니다";
}
}
}
물론 이것이 정답이지만 리턴값이 해당요일 +1 값으로 반복된다는 것을 알게되었다.
이것을 배열과 반복문으로 한다면 좀 더 간단하게 표현 할 수 있을 것이라고 생각했다.
가령 {"월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"}이라고 한다면 총 7개의 인덱스가 있고 0~6번 인덱스까지 순서대로 0을 대입하면 1이, 1을 대입하면 2가 출력되도록 수식을 만들어주면 될 것이라고 생각했다.
public class main {
public String followingDay(String day) {
String[] days = new String [] {"월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"};
for(int i=0; i<7;i++){
if(day.equals(days[i])){
return days[(i + 1) % 7];
}
}
return "올바른 요일이 아닙니다.";
}
}
요렇게 코드를 만들어봤다.
결과는 어떨까?!!

오잉?!!
"올바른 요일이 아닙니다."에서 '.'(점)을 빼야한다...ㅎㅎ 또실수 ㅎㅎㅎㅎㅎ

이렇게 배열과 for문을 함께 사용하면 비슷한 문장의 반복을 최소화하고 짧은 코드를 작성 할 수 있다.
부족한점
배열로 구상하는 과정이 매끄럽지 못했다. String[] days = new String[]{}; 로 배열을 선언하는 것을 처음 알게 되었다.
또한 배열과 요일을 어떻게 활용할지에 대해서 생각하는 것도 시간이 걸렸다.
하나하나 뜯어서 생각해보니 인덱스가 0일때 월요일이 대입되는 것이고 인덱스 +1은 다음날이 되는 것이었다.
따라서 for문에 i=0값으로 리턴값이 i+1이 되는 식을 만들어야 겠다고 생각했다.
또한 일요일 뒤에는 월요일이 오므로 for문은 i=6일때 i+1=7이 아닌 i=0을 출력해야하므로 총 인덱스 개수인 7로 나머지 연산하여 i=6+1일 때 i=0으로 i값이 순환되도록 하였다. i값을 순환하는 것 또한 처음 알게된 방법이었다.
'개발일지 > Trouble Shooting' 카테고리의 다른 글
[ 문제 해결 ] H2에 접근이 안되는 이유?! (0) | 2022.12.01 |
---|---|
[문제해결] mapstruck build오류 해결 (매우 짧은 글) (0) | 2022.11.21 |
[ 문제 해결 ] PasswordEncoder' that could not be found. (0) | 2022.11.21 |
[ 오류 해결 ] HTTP 400, 404, 500 도대체 누구냐 넌?! (0) | 2022.11.17 |
[문제 회고] 논리타입 (0) | 2022.08.30 |
요일을 입력받아 해당 요일의 다음 요일을 리턴해야하는 문제였다.
인자는 day를 받으며 "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"을 활용하여
해당 요일이 "월요일"이라면 "화요일"이 리턴 될 수 있도록 요구하는 문제였다.
올바른 요일이 아닌 경우에는 "올바른 요일이 아닙니다"를 리턴한다.
public class main {
public String followingDay(String day) {
// TODO:
}
}
가장 처음 들었던 생각은 if문으로 7번 작성하면 될 것이라고 생각했다.
다음과 같이 말이다.
public class Solution {
public String followingDay(String day) {
if (day.equals("월요일")){
return "화요일";
} else if (day.equals("화요일")) {
return "수요일";
} else if (day.equals("수요일")) {
return "목요일";
} else if (day.equals("목요일")) {
return "금요일";
} else if (day.equals("금요일")) {
return "토요일";
} else if (day.equals("토요일")) {
return "일요일";
} else if (day.equals("일요일")) {
return "월요일";
} else {
return "올바른 요일이 아닙니다";
}
}
}
물론 이것이 정답이지만 리턴값이 해당요일 +1 값으로 반복된다는 것을 알게되었다.
이것을 배열과 반복문으로 한다면 좀 더 간단하게 표현 할 수 있을 것이라고 생각했다.
가령 {"월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"}이라고 한다면 총 7개의 인덱스가 있고 0~6번 인덱스까지 순서대로 0을 대입하면 1이, 1을 대입하면 2가 출력되도록 수식을 만들어주면 될 것이라고 생각했다.
public class main {
public String followingDay(String day) {
String[] days = new String [] {"월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"};
for(int i=0; i<7;i++){
if(day.equals(days[i])){
return days[(i + 1) % 7];
}
}
return "올바른 요일이 아닙니다.";
}
}
요렇게 코드를 만들어봤다.
결과는 어떨까?!!

오잉?!!
"올바른 요일이 아닙니다."에서 '.'(점)을 빼야한다...ㅎㅎ 또실수 ㅎㅎㅎㅎㅎ

이렇게 배열과 for문을 함께 사용하면 비슷한 문장의 반복을 최소화하고 짧은 코드를 작성 할 수 있다.
부족한점
배열로 구상하는 과정이 매끄럽지 못했다. String[] days = new String[]{}; 로 배열을 선언하는 것을 처음 알게 되었다.
또한 배열과 요일을 어떻게 활용할지에 대해서 생각하는 것도 시간이 걸렸다.
하나하나 뜯어서 생각해보니 인덱스가 0일때 월요일이 대입되는 것이고 인덱스 +1은 다음날이 되는 것이었다.
따라서 for문에 i=0값으로 리턴값이 i+1이 되는 식을 만들어야 겠다고 생각했다.
또한 일요일 뒤에는 월요일이 오므로 for문은 i=6일때 i+1=7이 아닌 i=0을 출력해야하므로 총 인덱스 개수인 7로 나머지 연산하여 i=6+1일 때 i=0으로 i값이 순환되도록 하였다. i값을 순환하는 것 또한 처음 알게된 방법이었다.
'개발일지 > Trouble Shooting' 카테고리의 다른 글
[ 문제 해결 ] H2에 접근이 안되는 이유?! (0) | 2022.12.01 |
---|---|
[문제해결] mapstruck build오류 해결 (매우 짧은 글) (0) | 2022.11.21 |
[ 문제 해결 ] PasswordEncoder' that could not be found. (0) | 2022.11.21 |
[ 오류 해결 ] HTTP 400, 404, 500 도대체 누구냐 넌?! (0) | 2022.11.17 |
[문제 회고] 논리타입 (0) | 2022.08.30 |