항해99 온보딩 스터디[Java 언어 기초] 7일차

Hohomi·2023년 3월 13일
0
post-thumbnail

스터디 7일차 : 코딩테스트(Lv.0) 풀기


오늘은 코테를 처음 풀어보는 날이라서 아주 쉬운 문제들로 구성되어있었다.
프로그래머스의 Lv.0 문제들을 풀었다.

대부분은 연산자만 입력하는 정도의 문제라 바로 풀었는데, 2문제 정도는 시간이 좀 걸렸다. 변수를 어떻게 사용해야 할지, 조건식이나 조건문은 어떤 걸 어떻게 사용해야 할지 하는 것들을 생각해야했다. 이번 주에는 지난 주에 배운 걸 응용하는 연습을 많이 하게 될 것 같다!

🍎 문제1 : 나이 출력

나이 age가 주어질 때 2022년을 기준으로 출생연도를 return하는 함수 정의

class Solution {
            public int solution(int age) {
                int thisYear = 2022;
                return thisYear - age + 1;
            }
        }

앞에서 더하기, 빼기 문제를 슥슥 풀다가 갑자기 나이와 2022년, 출생연도... 사이의 관계를 생각해야하는 문제가 나와서 좀 쫄았다..ㅋㅋ 찬찬히 생각해보니 올해 연도에서 나이를 빼주면 되는 간단한 문제였다.🙂


🍎 문제2 : 짝수의 합

정수 n이 주어질 때, n 이하의 짝수를 모두 더한 값을 return하는 함수 정의

< 나의 풀이 >

class Solution {
            public int solution(int n) {
                int answer = 0;

                for (int i = 0; i <= n; i++) {
                    if (i % 2 == 0) {
                        answer += i;
                    }
                }
                return answer;
            }
        }

< 다른 분 풀이 >

class Solution {
    public int solution(int n) {
        int answer = 0;

        for(int i=2; i<=n; i+=2){
            answer+=i;
        }
        return answer;
    }
}

다른 분들의 풀이가 더 좋아보여서 옮겨왔다. 조건이 있는 반복을 할 때 조건식을 잘 써주면 반복횟수를 줄일 수 있어 효율이 좋다. 아래의 풀이가 바로 그렇다. 짝수의 합만 더하면 되니 반복하는 i에 짝수만 들어가게 조건을 걸어주었다.


🍏 디버깅 시 주의점

코테를 풀기 시작하니 바로바로 리턴값이나 오류 상황을 알 수 있는 디버깅이 필요해졌다. 그래서 검색을 통해 시도해보았는데 문제가 있었다. 벌레모양 버튼은 눌리는데, 그 이후로 아무 일이 일어나지 않고, step over 같은 버튼들은 모두 비활성화 되어있었다.

오류메시지 상으로는 뭔가 class의 문제인 것 같기는 한데 정확히 알 수가 없어 방도를 찾지 못했고, 스터디 팀원분들과 의논해보아도 잘 모르겠어서 기술매니저님께 여쭤보기로 했다.

원인은 간단했다. 메인 메서드를 빼먹었기 때문.

문제를 풀 때 프로그래머스에 나온 예제를 그대로 복사해서 인텔리제이로 가지고와서 푸는데, 그러다보니 main 메서드 없이 Solution 클래스 안의 solution 함수 내용만 쓴 후 디버깅을 눌렀었다.

메인 메서드가 없으니 그 파일은 실행 자체가 되지 않았고, 그렇기 때문에 당근 디버깅도 안 됐던 것.. 아래처럼 메인 메서드 넣어주니 실행&디버깅 잘 됐다! 기본적인 걸 잘 배워나가즈아..!

기술 매니저님이 있어 든든하다 🍎🍏

public class Solution {

    public static void main(String[] args) {
        int result = solution(3,2);
    }

        public static int solution(int num1, int num2) {

            double a = (double)num1 / num2;
            int answer = (int)(a * 1000);
            return answer;
        }
    }
profile
게발로 개발하기

0개의 댓글