[Java] 12901 2016๋
๐ 2016๋
1. ๋ฌธ์ ์์ฝ
- 2016๋ a์ b์ผ์ด ๋ฌด์จ ์์ผ์ธ์ง ๋ฆฌํดํ๋ ํจ์
- ์์ผ ์ด๋ฆ์ ๊ฐย
SUN,MON,TUE,WED,THU,FRI,SAT
2. ์ ๊ทผ ๋ฐฉ๋ฒ
- ๊ฐ ๋ฌ์ ์ผ์๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ ์ด ๋ ์ค๋
์ ์ฉ
- int[] days = {31,29,31,30,31,30,31,31,30,31,30,31};
- ์ ๋ ฅ๋ ๋ฌ ์ ๊น์ง ์ผ์๋ฅผ ํฉ์ฐ โ ์ด ์ง๋ ์ผ ์ ๊ณ์ฐ
- 1์ 1์ผ๋ถํฐ ์
๋ ฅ์ผ๊น์ง ์ด ์ผ์ โ ์์ผ ๊ณ์ฐ
- (์ด์ผ์ + ๊ธฐ์ค ์์ผ ์ธ๋ฑ์ค) % 7
- ๊ธฐ์ค ์์ผ: 1์ 1์ผ = ๊ธ์์ผ โ ์ธ๋ฑ์ค 5 (0=SUN)
3. ์ ๋ต์ฝ๋
class Solution {
public String solution(int a, int b) {
// 2016 ์ค๋
ํ ๋ฌ ์ผ์
int[] days = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
String[] week = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
// 1์ 1์ผ๋ถํฐ ์
๋ ฅํ ๋ ์ง๊น์ง ์ด ์ผ์ ๊ณ์ฐํ๊ธฐ
int totalDays = 0;
for (int i = 0; i < a - 1; i++) {
totalDays += days[i];
}
totalDays += b; // ๋ฐ๋ณต๋ฌธ ๋ฐ์์ ์ด๋ฒ๋ฌ ์ผ์ ์ถ๊ฐ
// 2016๋
1์ 1์ผ ์์ผ์ ๊ธ์์ผ(FRI)
// ๊ธ์์ผ(FRI, idx 5)
// ๊ทธ๋ผ (totalDays + ?) % 7 = 5๊ฐ ๋๋๋ก ๊ณ์ฐํ๋ฉด?
// (1 + ?) % 7 = 5;
// ? = 4
int dayOfWeek = (totalDays + 4) % 7;
return week[dayOfWeek];
}
}
- ๊ฐ ๋ฌ ์ผ์ ๋ฐฐ์ด๊ณผ ์์ผ ๋ฐฐ์ด ์ค๋น
- ์ ๋ ฅ ๋ฌ ์ ๊น์ง ์ผ์ ํฉ์ฐ + ์ด๋ฒ ๋ฌ ๋ ์ง โ ์ด ์ง๋ ์ผ์ totalDays ๊ณ์ฐ
- 1์ 1์ผ ๊ธ์์ผ ๊ธฐ์ค ๋ณด์ (+4) โ ์์ผ ์ธ๋ฑ์ค (totalDays + 4) % 7 ๊ณ์ฐ
- ๊ณ์ฐ๋ ์ธ๋ฑ์ค๋ก week[] ์์ ์์ผ ๋ฌธ์์ด ๋ฐํํ๊ธฐ
4. ์ค๋ต / ์ด๋ ค์ ๋ ์
1. 1์ 1์ผ๋ถํฐ ์ ๋ ฅํ ๋ ์ง๊น์ง ์ง๋ ์ผ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ
์๋ฅผ ๋ค์ด์ a = 5์, b = 24์ผ์ด๋ผ๋ฉด 1์, 2์, 3์, 4์ ์ด ์ผ์ + 5์ 24์ผ ์ด ์ผ์๋ฅผ ํฉ์ณ์ผ ํ๋ค.
for (int i = 0; i < a - 1; i++) {
totalDays += days[i];
}
- i = 0 โ 1์ ์ผ์ ๋ํ๊ธฐ
- i = 1 โ 2์ ์ผ์ ๋ํ๊ธฐ
- i = 2 โ 3์ ์ผ์ ๋ํ๊ธฐ
- i = 3 โ 4์ ์ผ์ ๋ํ๊ธฐ
- ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ์ โ a - 2๊น์ง ๋๊ณ ์ด a - 1๊ฐ์ ์ด์ ๋ฌ ์ผ์๊ฐ ํฉ์ฐ๋๋ค. ์ฆ ์ ๋ ฅํ ๋ฌ ์ด์ ๋ฌ๋ค์ ์ผ์๋ฅผ ๋ชจ๋ ๋ํ๋ ๋ฐ๋ณต๋ฌธ
- ์ฌ๊ธฐ;์ a - 2 ๊น์ง ๋๋ ์ด์ ๋ ์ธ๋ฑ์ค๊ฐ 0๋ถํฐ ์์์ด๋ผ์
2. ์์ผ ์ธ๋ฑ์ค (totalDays + 4) % 7 ์ธ ์ด์ (์ฃผ์์ ์์)
- 2016๋ 1์ 1์ผ ์์ผ์ ๊ธ์์ผ(FRI)
- ๊ธ์์ผ(FRI, idx 5)
- ๊ทธ๋ผ (totalDays + ?) % 7 = 5๊ฐ ๋๋๋ก ๊ณ์ฐํ๋ฉด?
- (1 + ?) % 7 = 5;
- ? = 4