초를 입력받으면 년/일/시간/분/초로 변환하여 출력해보세요
※ 단, 필요없는 단위는 출력하지 말 것
ex: 0년 0일 13시간 0분 5초인 경우 -> 13시간 0분 5초만 나와야 함
1. 스캐너를 이용하여 유저에게 초를 입력받는다.
2. seconds배열을 만들어 그 안에는 년,일,시,분 을 구할 수 있는
계산식을 넣어두고 seconds 배열에 담긴 식들을 유저가 입력한 숫자와
나누고 나누어진 값을 converted에 담아준다.
second %= seconds[i] 를 해주는 이유는 예를들어
분을 구할때에 한시간은 3600초로 이루어져있는데 5000이라는 값이 들어왔을때에
5000/60 을 하게되면 정확한 분의 값을 구할수 없게되기 때문이다.
그렇기 때문에 한번 계산식의 계산이 끝날때마다 허용범위 이상의 값을 쳐내고 나머지값으로
남겨 다음 계산식에 정확한 값을 구하는것이다. (예시를 참고!)
※ 입력값은 6005이다 second%= seconds[i]가 없다고 가정할때에 값이다
6005 / seconds[0] = 0, 6005 / seconds[1] = 0,
6005 / seconds[2] = 1, 6005 / seconds[3] = 100
이라는 값이 나오는데 이렇게 된다면 1시 100분 5초라는 값이 나오게된다
※ 입력값은 6005이다 second %= seconds[i]가 있을때의 값이다
6005 / seconds[0] = 0, 6005 / seconds[1] = 0,
6005 / seconds[2] = 1, 6005 / seconds[3] = 40
이렇게 된다면 1시 40분 5초라는 정확한 값이 나오게된다.
분의 허용치는 60분 초로따진다면 3600초이기 때문에 그 허용범위 이상을 벗어나는 값은 %= 계산을
이용하여 쳐내고 나머지 값으로만 분을 구한다고 쉽게 생각하면된다.
이때에 초를 구하는 방법은 seconds 배열의 계산식을 다 거쳐가지만 마지막에는 분을 구하기 위해 60이 들어있는데
유저가 입력한 값 second % 60 을 해주어서 초를 구해준다.
3. converted에는 seconds에 담긴 계산식을 이용해 구한 년, 일, 시, 분의 값이 들어가있는데
조건이 필요없는 단위는 출력하지 않는것 이기 때문에 반복문을 이용하여
안에 든 값이 0이 아니라면 출력하여 주면되는데 만약 1시 0분 5초라면
0이 아니라면 이라는 조건만 있을때에는 1시 5초만 출력되기때문에
boolean타입의 변수인 exist를 이용하여 한번 0이 아닌것이 출력된 이후 시점부터는
0이 들어있어도 출력하여 1시 0분 5초 가 나올수 있게 해준다.
'공부 > Java 복습' 카테고리의 다른 글
Java HashSet, Stream, for문을 통한 중복제거 방법 (0) | 2021.09.28 |
---|---|
Java 문자열을 뒤집는 4가지 방법 + 시간효율 (0) | 2021.09.26 |
Java checkWord (0) | 2021.09.24 |
Java DiscountDay (0) | 2021.09.23 |
5DiceGame 자바 (0) | 2021.09.12 |