gnidoc 2019. 1. 9. 22:05
반응형

2019/01/08 - [프로그래밍/알고리즘] - 1, 2일차 리뷰


이어서 3일차


벌써부터 java에서 for문 쓰기가 귀찮아진다.

java에선 for문을 이렇게 쓰는데

1
for (int i=0;i<10;i++) {}
cs


내가 = ; < 같은 특수문자를 빠르게 치는법을 모르는건지

for문 치는게 너무 귀찮다


python에서는 

1
for i in range(010)
cs


Node.js에서는 라이브러리(underscore) 힘을 빌려서

1
_.each(_.range, function() {})
cs


요렇게 쓰는데 뭔가 더 길어지긴했으나 특수문자가 별로 없어서 좋다

암튼 서론은 여기까지


step 3은 for문


별찍기 문제들이라서 좀 의미있던 문제만 리뷰!




1924번

오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

(첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.)


난 생각없이 java의 calendar class을 사용해서 풀었다.

내 풀이 : https://github.com/gnidoc327/one-day-one-problem/blob/master/src/step_by_step/step3/Problem1924/Main.java


풀고 나서 생각해보니 for문 단계인데 왜 calendar을 썼을까라는 생각이 들긴했다.

아래처럼 for문으로 간단하게 풀수있는 것을...

(맘에 드는 코드는 아니지만 공개된 정답 코드 중 다른 분이 푼걸 일부 복붙해왔다)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int m = sc.nextInt();
int d = sc.nextInt();
 
int[] mdays = new int[13];
mdays[1= mdays[3= mdays[5= mdays[7= mdays[8= mdays[10= mdays[12= 31;
mdays[4= mdays[6= mdays[9= mdays[11= 30;
mdays[2= 28;
 
int sum = 0;
 
for(int i = 1; i <= 12; i++) {
    if(i == m)  {
        break;
    }
 
    sum = sum + mdays[i];
}
 
sum = sum + d;
 
switch(sum % 7) {
...
cs


간단하게 풀수있는걸 너무 멀리 와버린 느낌적인 느낌이랄까

라이브러리 쓰는거에 너무 익숙해진 탓인가;;

알고리즘 푸는거 열심히 해야겠다;;

반응형