프로그래밍/알고리즘
3일차 리뷰
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(0, 10) | 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을 사용해서 풀었다.
풀고 나서 생각해보니 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 |
간단하게 풀수있는걸 너무 멀리 와버린 느낌적인 느낌이랄까
라이브러리 쓰는거에 너무 익숙해진 탓인가;;
알고리즘 푸는거 열심히 해야겠다;;
반응형