개발일지/Trouble Shooting

[문제 회고] 조건문

Kangharyeom 2022. 9. 1. 00:16
728x90

요일을 입력받아 해당 요일의 다음 요일을 리턴해야하는 문제였다.

인자는 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값을 순환하는 것 또한 처음 알게된 방법이었다.