어제 병원을 다녀와 시간이 부족해 어제자 TIL 오늘 작성한다.
2주차 강의 7강까지 들었다.
사칙연산 및 비교연산자, 논리연산자, 대입연산자, 기타연산자, 비트연산자, 연산자 우선순위에 대해 배웠고, if와 switch를 활용한 조건문 작성에 대해서도 배웠다.
연산자 우선순위 : 산술 > 비교 > 논리 > 대입이고, 괄호가 붙은 것은 최우선순위라는 것을 배울 수 있었다.
또한 학교에서 크게 다루지 않던 비트연산자에 대해서도 배울 수 있었다.
<<은 비트를 왼쪽으로, >>는 비트를 오른쪽으로 미는것이다.
0, 1은 2진수 값이기 때문에, 자릿수를 왼쪽으로 옮기는 횟수만큼 2의 n승으로 곱셈이 연산되고,
자릿수를 오른쪽으로 옮기는 횟수만큼 2의 n승으로 나눗셈이 연산된다.
// 비트 연산
// 참고, 3의 이진수값은 11(2) 입니다. 12의 이진수값은 1100(2) 입니다.
// (2) 표기는 이 숫자가 이진수값이라는 표식 입니다.
System.out.println(3 << 2);
// 3의 이진수값인 11(2) 에서 왼쪽으로 2번 옮겨져서 1100(2) 인 12값이 됩니다.
System.out.println(3 >> 1);
// 3의 이진수값인 11(2) 에서 오른쪽으로 1번 옮겨져서 1(2) 인 1 값이 됩니다.
이와 같다.
if문은 많이 다루어 넘어가고, switch문에 대해 더 정확히 알 수 있었다.
switch(피연산자) { case(조건): (연산) } 이러한 형태로 많이 쓰인다.switch 피연산자가 case 조건을 만족하면 case: 뒤에 명시되어 있는 연산을 수행한다.case(조건): (연산) 은 여러 개를 설정할 수 있다.🔎 각 case의 연산문 마지막에는 break;를 꼭 넣어줘야 한다!!
break; 문은 해당 case의 연산문이 끝났다는 것을 알려주어 switch 문을 종료시켜줍니다.
case의 연산문이 안 끝났기 때문에 switch 문 블럭이 끝날 때까지 전부 실행됩니다!
switch문 중괄호 안의 제일 마지막에 default: (연산) 을 명시해 주어 case 조건들이 모두 만족하지 않을 때 수행할 연산을 정해주어야 합니다.default: (연산) 은 아무것도 만족하지 않을 때 수행하는 것이라, 없다면 생략해도 됩니다.int month = 8;
String monthString = "";
switch (month) {
case 1: monthString = "1월";
break;
case 2: monthString = "2월";
break;
case 3: monthString = "3월";
break;
case 4: monthString = "4월";
break;
case 5: monthString = "5월";
break;
case 6: monthString = "6월";
break;
case 7: monthString = "7월";
break;
case 8: monthString = "8월";
break;
case 9: monthString = "9월";
break;
case 10: monthString = "10월";
break;
case 11: monthString = "11월";
break;
case 12: monthString = "12월";
break;
default: monthString = "알수 없음";
}
System.out.println(monthString); // 8월 출력
이렇게 쓸 수 있다.
두 조건문의 차이점은 아래와 같다.
()안에 조건 여러 개를 지정하여 조건문을 수행할 수 있습니다.어제 알고리즘, SQL문제를 시작하게 되었다.
프로그래머스를 이용하였고, sql은 4번, 알고리즘은 13번까지 풀었다.
그 중 자릿수끼리 더하는 문제에 대해 써보려고 한다.
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
위 문제였는데, toString이나 Character.getNumericValue() 같은 방법을 쓰지 않고, 반복문만 이용하여 풀어보려고 하였다.
while (N > 0) {
answer += N % 10; // N을 10으로 나눈 나머지를 더하여 현재 자릿수를 얻음
N /= 10; // N을 10으로 나누어 다음 자릿수를 준비
}
위와 같은 코드를 작성 할 수 있었다.
예를 들어 n이 1452라고 가정했을 때, 1452를 10으로 나눈 몫은 145, 나머지는 2가 된다.
여기서 2를 answer에 더하고, 몫인 145는 다음 반복의 n값이 된다. 다시 10으로 나눈 몫은 14, 나머지는 5가 되고, 이를 다시 answer에 더한다.
이를 반복하여 12라는 값을 얻을 수 있었다.
오랜만에 SQL문을 다루면서, 예전에 공부했던 자료들을 찾아보았는데, 다시 공부할 필요성을 느꼈다. 강의도 얼른 들어야겠다.