코딩 테스트 공부를 시작했다.
퇴근 후 자기개발이 이렇게 힘들었다니.. 나이가 들긴 한거 같다.
알고리즘은 대학교 1학년 전공과목을 수강 후 처음으로 공부하는 것 같다. 그동안 이런저런 핑계를 대며 늦춰왔던 내가 싫어지지만 지금이라도 시작해서 다행이라 자위하며 백준을 들어갔다. 막상 시작하니 간단한 입출력 문제도 멘붕이 왔다. 현재 직무는 DevOps 라지만 구글링과 GPT에 절어버린 나는 코드를 작성할 수 없어 결국 Java로 알고리즘 풀 때 주의할 점부터 읽기 시작했다.
InputStream -> byte, InputStreamReader -> char, BufferedReader -> String
이해한 것을 조금 더 쉽게 기억하기 위해 다음과 같이 입출력을 정리하고 나서야 손이 움직였다. 뇌가 깨어나는 기분이랄까.. 각성 상태에서 11번째 문제까지 풀어나갔다. 10번째 문제와 11번째 문제를 복기하자면
백준 입출력과 사칙연산 10번째 문제 : 2588
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Num_2588 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num1 = Integer.parseInt(br.readLine());
String num2 = br.readLine();
int count = 0;
double sum = 0;
for(int i = num2.length(); i > 0; i--) {
int num = Integer.parseInt(String.valueOf(num2.charAt(i - 1)));
System.out.println(num * num1);
sum += num * num1 * Math.pow(10, count);
count++;
}
System.out.println((int)sum);
}
}
10번째 문제는 종이에 대충 설계하고 시작했음에도 num1을 String, num2를 int로 받아 첫 번째 입력 값의 1의 자리부터 n의 자리까지 순서대로 두 번째 입력값을 곱하여 출력되는 값이 의도와 맞지 않았다. pseudocode 작성을 손에 익혀야겠다.
백준 입출력과 사칙연산 11번째 문제 : 11382
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Num_11382 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str, " ");
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
long c = Long.parseLong(st.nextToken());
System.out.println(a + b + c);
}
}
11번째 문제는 입력값의 범위를 제대로 확인하지 않고 long 타입 대신 int 타입으로 작성하여 제출 시 오류가 났다. 입력값의 범위를 잘 확인해야겠다.
앞으로 꾸준히 코딩 테스트 공부한 결과를 업로드하길 다짐하며! 30대 개발자들 파이팅..