같이 공부하시는 분의 추천으로 벨로그에서 티스토리로 옮겼다 !!
오늘은 과제 발제식도 있고 강의도 마저 듣고 블로그도 옮기느라
정신 없는 하루였다!
오늘 한 일
알고리즘 & SQL 코드카타 문제 한개씩 풀기
오늘 받은 개인과제 lv1 해보기
알고리즘 문제
없는 숫자 더하기
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
나의 풀이
푸신분들중에 처음부터 answer에 1~10까지 모두 더한 45를 담고 for문을 돌면서 numbers에 들어있는 값들을 누적으로 빼는 로직을 짜신분도 있었는데 신기했다..!!
SQL 코드카타 - 조회수가 가장 많은 중고거래 게시판
USED_GOODS_BOARD 와 USED_GOODS_FILE
테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.
나의 풀이
서브쿼리를 이용해서 USED_GOODS_BOARD의 조회수가 가장 많은 BOARD_ID와 같은 BOARD_ID인 정보만 가져와서 CONCAT함수를 이용하여 파일 형식으로 만들어서 보여주게 했다.
개인과제
오늘 받은 개인 과제는 lv1 ~ lv3 까지 각각 구현해야하는 기능들이 다른데 오늘은 lv1까지 했다.
lv1에서 해야할것은 크게 4가지였는데
1. 양의 정수(0 포함) 입력 받기.
2. 사칙연산 기호를 입력받기
3. 위에서 입력받은 양의정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기
4. 반복문을 사용하되, 반복의 종료를 알려주는 “exit” 문자열을 입력하기 전까지 무한으로 계산을 진행할 수 있도록 소스 코드를 수정하기이다.
예외처리를 위해 try ~ catch문을 이용했다
package calculatingMachine.lv1;
import java.util.InputMismatchException;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// exit를 입력받으면 flag를 false로 바꿔 while문 종료.
boolean flag = true;
// 연산 결과를 저장하기 위한 공간
int result = 0;
int firstNumber = 0;
String operation = "";
int secondNumber = 0;
while (flag) {
// 정수가 아닌 다른 타입의 문자를 입력을 방지하기위해 try ~ catch 문을 이용
try {
System.out.print("숫자 입력 : ");
firstNumber = sc.nextInt();
// nextLine을 쓸때 위에 nextLine이 아닌 다른 입력이 있으면 엔터키를 하나 더 먹는 이슈가 있어서 방패막으로 의미없는 line써줌.
sc.nextLine();
System.out.print("사칙연산 기호 입력(+,-,*,/) : ");
operation = sc.nextLine();
System.out.print("숫자 입력 : ");
secondNumber = sc.nextInt();
}
// 정수가 아닌 다른 타입의 문자를 입력했다면 아래에 문구를 출력 후 실행 중지.
catch (InputMismatchException e) {
System.out.println("정수만 입력해주세요 !");
System.out.println("다시 실행해주세요 ~ ");
break;
}
switch (operation) {
case "+":
result = firstNumber + secondNumber;
break;
case "-":
result = firstNumber - secondNumber;
break;
case "*":
result = firstNumber * secondNumber;
break;
case "/":
try {
result = firstNumber / secondNumber;
break;
} catch (ArithmeticException e) {
System.out.println("정수는 0으로 나눌 수 없습니다.");
continue;
}
// +,-,*,/ 가 아닌 다른 것을 입력하면 다시 입력해주세요라는 출력문과 함께
// switch문 반복
default:
System.out.println("연산기호를 다시 확인해주세요 !");
continue;
}
System.out.println("결과 " + result);
System.out.print("더 계산하시겠습니까 ? (exit 입력시 종료) : ");
// nextLine으로 입력을 받으면 엔터가 자동으로 돼서 if문을 거치지 않고 바로 넘어가버린다.
String answer = sc.next();
// 입력된 값이 exit라면 flag를 false로 만들어서 while문 탈출
if (answer.equals("exit")) {
flag = false;
}
// 그게 아니라면 while문 반복
else {
flag = true;
}
}
}
}
오늘은 강의도 듣고 개인과제도하느라 lv1까지 밖에 못했는데 내일은 lv2까지 해봐야겠다
'TIL' 카테고리의 다른 글
[TIL] 9월 13일 (1) | 2024.09.13 |
---|---|
[TIL] 숫자 야구 게임 만들기 (2) | 2024.09.12 |
[TIL] 계산기 3레벨 마무리 (1) | 2024.09.10 |
[TIL] 계산기 3레벨 해보기 (6) | 2024.09.09 |
[TIL] 오늘은 금요일 ! (1) | 2024.09.06 |