본문 바로가기

개발 일지/TIL

[ #12 ] TIL (개인과제 Level 1)

✏️ 0430      


Java 문법 종합반 강의_4주차

개인 과제

 보충반 / 심화반 OT

[ 특강 ]  Git 심화


개인 과제

    내가 해냈다..!!!

 

계산기 : Level 1

 

솔직히 어제 밤에 초반부부터 막혀서 완성 못 할 줄 알았다!

아침 루틴 하고 4주차 강의 듣고 하다보니 오후부터 시작했는데

잠시 막혔다가 어느 순간부터 뽝 집중했는지 진도를 훅훅 나갔다

정말 그때의 쾌감이란 아주 말로 표현할 수 없을 만큼 짜릿했다⭐

 

 

1-3 문제는 지금 생각해봐도 가장 어이없는 상황의 문제가 되었다

 

연산 오류가 발생할 경우 해당 오류에 대한 내용을 정제하여 출력하는 부분인데

직접 입력값을 넣어서 해봤는데 정말 오류가 일어나길래

 

어? 예외처리 해야해?!

 

하면서 급하게 4주차 강의를 듣게 되었다

시간이 별로 없는 나머지 영상 계속 쭈욱 틀어놓고 이해 못해도 넘어가는 식으로 들어서 사실상 잘 모르겠다

어떡하지 하면서 다시 문제로 돌아왔는데 갑자기 궁금해진게 PC 계산기도 오류가 나나 해서 확인해봤더니

 

 

뜨더라... 나만 몰랐던 걸까?

이걸 보고 꽤 충격을 받았는지 예외 처리 밖에 생각이 없던 머리에서 if 문으로 처리하면 되잖아?

라는 생각에 그제서야 코드를 다시 작성해봤더니 

 

case '/':
    if (SecondNum == 0) {
        System.out.println("나눗셈 연산에서 분모(두번째 정수)에 0이 입력될 수 없습니다.");
        break;
    }
    result = firstNum / SecondNum;
    break;

 

되더라...

정말 허무하면서도 자기 자신에게도 어이가 없었던 그런 문제였다

 

 

 

1-4 문제는 사용할 코드, 문제에서 제시하는 코드의 형태가 그려졌지만 로직에 대한 고민을 많이 했다

 

반복문을 이용해 무한으로 계산할 수 있도록 구현까지는 했지만

추가적인 exit 입력 시 종료하는 코드는 반복문 안으로 다 들어와야 하는 것인지

밖으로 나가야하는 일부 코드가 있는지에 대한 고민을 했던 것 같다

 

String inputExit = "";

while (!inputExit.equals("exit")) {
    System.out.print("첫 번째 숫자를 입력하세요: ");
    int firstNum = sc.nextInt();
    ...
    System.out.println("더 계산하시겠습니까? (exit 입력 시 종료)");
    // 초기값 수정
    inputExit = sc.next();
}

 

 

그렇게 완성된 코드가 위의 내용이다

exit 를 입력 시에 종료가 되어야 함으로 while 문 밖으로 뺀 전역변수로 사용해서 while 의 조건문으로 사용했다

조건문으로 사용하기 위해 초기값을 빈값으로 지정해주었다

변수 지정 없이는 코드 실행이 안되는 걸 확인했다

 

 

 

1-5 문제를 구현할 때 가장 막혔던 것 같다 ( Level 1의 모든 문제 중 가장 오래 걸린...)

 

배열을 사용하라고 되어있어서 컬렉션 사용하려고 했는데 그 내용은 밑에 이미 있었다

그렇담 이건 그냥 기본 배열인 문제가 된다

 

일단 배열 선언과 생성부터 헷갈렸다

int[] intArray = new int[10];

 

선언과 생성 둘 다 잘했는데 그냥 막혔다 ( 🤔 : ❓)

 

진짜 저 코드를 썼다가 지웠다가, 이게 맞나 검색도 해보고 이전에 정리했던 TIL 내용도 다시 보고, 강의 자료도 다시 보고

얼마나 헷갈렸냐면 하도 머리가 안 굴러가서 

 

메모지에 이런 식으로 끄적이고 있었다 (악필, 지저분 주의)

 

배열 안에 값을 어떻게 넣더라? add 랑 push 는 컬렉션 쪽인데! 하면서 다시 찾아보고

index 로 값 저장하는 것을 알아낸 이후로는 index 값을 저장할 count 변수 위치와 활용법에 대해 고민했다

 

처음에 배열 안에 값이 잘 들어가고 있는지 확인하기 위해 출력했는데

같은 자리에 입력된 값이 들어가고 있어서 그제서야 count 값을 바꿔줘야 한다는 것을 깨달았다

// 길이가 10인 배열 선언 및 생성
int[] intArray = new int[10];
// 배열의 마지막 index 를 저장하는 변수
int count = 0;

while (!inputExit.equals("exit")) {
    System.out.print("첫 번째 숫자를 입력하세요: ");
    ...
    // 배열에 저장
    intArray[count] = result;
    // 배열 index 증가
    ++count;

    // 배열 10칸이 가득 차면 반복문 종료 => 가득 차면서 오류가 뜨길래 코드 추가
    if (count == 10) {
        System.out.println("배열의 저장공간이 가득 찼습니다");
        break;
    }
}

 

index 위치를 저장하는 count 변수도 보기 편하게 선언하는 코드 쪽으로 같이 모아줬다

배열 위치에 저장한 후 count 값을 변경해주고 문제에서 제시는 되어있지 않았지만

코드 잘 되는지 확인을 하기 위해 막 입력해보다가 배열 크기를 넘치면 빨간 글씨가 뜨면서 멈추길래

if 문을 추가해서 넣어줬다

 

조건문을 count == 10으로 해둔 이유는 위에서 마지막 index 9 번째 값을 추가해준 다음 ++count 을 해주는데

그때 10이 내려오면서 해당 조건문에 들어가 성립하게 되는 형식으로 해두고

반복문도 바로 종료하기 위해 break 키워드를 추가적으로 넣어주었다

 

 

회고

 

오전에는 1시간동안 코드 카타 (알고리즘, SQL)를 풀었던 문제들을 정리하고 있어서 사실상 시간이 별로 없는 편이다

그래도 문제를 풀고 땡 하는 것이 아닌

다시 코드를 보고 새로운 코드가 떠오르거나 복습할 수 있는 시간이 되어서

필요한 시간이라고 개인적으로 생각한다

 

그럼에도 불구하고 의도치 않은 4주차 강의까지 듣게 되고

정답이 아닐 수도 있는 코드들이지만

목표했던 Level 1 문제를 혼자서 풀었다는 것에 엄청 만족한다🔅

'개발 일지 > TIL' 카테고리의 다른 글

[ #14 ] TIL  (0) 2024.05.02
[ #13 ] TIL (개인과제 Level 2)  (1) 2024.05.01
[ #11 ] TIL  (0) 2024.04.30
[ #10 ] TIL  (0) 2024.04.27
[ #9 ] TIL  (3) 2024.04.25