오늘은 코테를 처음 풀어보는 날이라서 아주 쉬운 문제들로 구성되어있었다.
프로그래머스의 Lv.0 문제들을 풀었다.
대부분은 연산자만 입력하는 정도의 문제라 바로 풀었는데, 2문제 정도는 시간이 좀 걸렸다. 변수를 어떻게 사용해야 할지, 조건식이나 조건문은 어떤 걸 어떻게 사용해야 할지 하는 것들을 생각해야했다. 이번 주에는 지난 주에 배운 걸 응용하는 연습을 많이 하게 될 것 같다!
나이 age가 주어질 때 2022년을 기준으로 출생연도를 return하는 함수 정의
class Solution {
public int solution(int age) {
int thisYear = 2022;
return thisYear - age + 1;
}
}
앞에서 더하기, 빼기 문제를 슥슥 풀다가 갑자기 나이와 2022년, 출생연도... 사이의 관계를 생각해야하는 문제가 나와서 좀 쫄았다..ㅋㅋ 찬찬히 생각해보니 올해 연도에서 나이를 빼주면 되는 간단한 문제였다.🙂
정수 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;
}
}