✔ JAVA 톺아보기
시작 전 목표랍시고 적어놓은 자바 톺아보기는 사전캠프 퀘스트의 '자바 톺아보기'를 읽어본다는 의미가 아닌
C언어를 공부한 사람의 입장으로서 기존에 알던 언어와의 비교를 하면서 자바의 기본을 톺아보겠다는 의미이다.자바는 배운 적이 없는 것이 맞지만 기존에 슥듭한 언어의 정보가 학습을 방해하지 못하도록 언어를 처음 배우듯 천천히 하되, 본래 가진 언어와 컴퓨터의 지식은 여과없이 활용해 보다 효율적으로 새로운 언어를 학습하는 것을 목표로 하고있다.
순조롭게 진행하다 처음으로 뇌정지가 왔던 곳은 다름아닌 연산자의 우선순위였다.
총 15단계의 우선순위를 가진 모든 연산자들의 나열을 보고있자니 머리가 지끈거리려 했으나 예시의 코드들을 보고 이미 모두 알고 있던 것임을 깨달았다.
직접 순위를 매겨보지 않았을 뿐 머리로는 이미 이해하고 있던 것들도, 글과 그림으로 보니 더 혼란할 수 있다는 것을 깨닫고, 이를 인지하며 학습할 필요성을 느꼈다.
- 향상된 for문
기존에 알던 for문과 다르게 나에게 있어 새로운 개념이 등장했다.
사용 예시는 다음과 같다int[] a = new int[]{1,2,3} for(int i : a) { System.out.print(i+" "); }그렇다 C#의 foreach문과 동일하다.
물론 모든 기능이 대응되지는 않겠지만 기존에 알던 것과 유사한 기능으로 대체된 문법은 이해하기가 편하다.
기초도 어느정도 봤겠다 문제를 풀어보기로 했다.
✔ JAVA 알고리즘 문제 풀기
앞으로는풀어본 모든 문제를 가져오는 것보다는, 재밌게 풀었거나 고민하는 시간이 길었던 문제들만 가져오려고 한다.
?
콜라츠 추측
어려운 문제는 아닌데 자주 쓰지 않는 재귀함수에 대해 가벼운 연습이 될 수 있을 것 같아 감도 살릴 겸 재귀함수를 사용해 풀어보았다.
class Solution { public int solution(int num) { int cnt=0; return collatz(num,cnt); } public int collatz(int num, int cnt) { if(cnt>=500) return -1; if(num==1) { return cnt; } else if(num%2==1) { return collatz(num*3+1,++cnt); } else { return collatz(num/2,++cnt); } } }이 짧은 코드 자체를 적는 것은 어렵지 않지만 재귀함수는 보다 깊은 사고를 요해서 시간이 알고리즘을 짜는 데 필요한 사고력과 머리속으로 코드의 흐름을 읽는 능력을 향상시키는 데 도움이 되는 것 같다.
오늘은 새로운 것을 배우거나 뭔가 많이 했다기보단 java에 대한 기본 개념들을 훑으며 C#과의 비교분석을 하는, 관점에 따라 복습의 개념으로 볼 수도 있는 공부를 했기에, TIL 즉, 문자 그대로 오늘 내가 배운 내용 그 자체는 적어 글이 짧아진 것 같다.