코드 저장소

공부에는 끝이 없다!

전체 글 79

백준 문제 풀이 - 문자열 단계 - 5622번 다이얼(브론즈 2)

문자열 단계도 이제 거의 막바지이다. 이번 문제는 다이얼 전화기에 각 알파벳에 해당하는 숫자가 있고, 문자열이 들어왔을 때 전화를 걸기 위해 최소 시간을 구하는 코드를 만드는 문제였다. 이 문제도 사람마다 푸는 방식이 많이 달랐는데, 대부분의 사람들은 다음과 같이 각 알파벳 별로 케이스를 만들고 케이스에 해당하는 카운트를 만들어 문제를 해결하였다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); int count = 0; int k = s.length(); for(int i = 0; i ..

백준 문제 풀이 - 문자열 단계

어느덧 문자열 단계까지 넘어왔다. 문자열 문제는 꽤 풀어봤던 터라 어렵지는 않았고 반복문을 사용하던 것을 함수로 썼던 것이라던지 좀더 쉽게 푸는 방법들을 정리해보려 한다. 9068번 문자열 (브론즈 5) 문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하는 문제이다. SubString을 사용하거나 배열을 써서 처음과 끝을 배열에 담고 출력하는 분들도 계셨다. 나는 StringBuilder를 사용해서 입력받은 문자열의 처음과 끝을 charAt 메서드로 뽑아내서 append 시키고 출력하는 방법을 사용했다. import java.util.*; import java.io.*; class Main{ public static int n; public static String s; ..

백준 문제 풀이 - 1차원 배열 단계 - 10811번 바구니 뒤집기

브론즈 2단계의 배역 역순 문제이다. 특정 인덱스의 시작과 끝값이 들어오면 배열의 해당 인덱스 값을 역순으로 뒤집는 간단한 문제였다. 다 풀고 확인해보니 다른 분들은 다 배열로 풀었는데 나는 ArrayList를 사용하여 풀어서 코드가 좀 많이 달랐다. (솔직히 for문 쓰는게 조금 귀찮아서 ArrayList로 한것도 있다.) 대부분의 분들은 아래 코드처럼 푸셨는데 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); ..

백준 문제 풀이 - 1차원 배열 단계 - 5579번 과제 안 내신 분...?

백준 문제를 풀어 보던 중 5579번에서 생각보다 애를 먹었다. 기본적인 문제였음에도 문제 의도를 제대로 파악하지 못해서 헤맸던것 같다. 해당 문제를 먼저 살펴보자. 해당 문제는 여러가지 방법으로 풀 수 있었는데, 나는 입력받은 배열을 생성해서 정렬한 후 앞의 인덱스의 1의 값을 더한 값과 일치하지 않으면 출력하는 방법으로 풀려고 하였다. 코드는 다음과 같이 구성하였는데 import java.util.*; import java.io.*; class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Array..

백준 문제 풀이 - 반복문 단계

반복문 역시 아직은 브론즈 단계라 그런지 크게 어려운 것은 없었다. 대부분 for문 while문을 사용하여 끝내면 되는 문제들이였고 해당 조건만 잘 맞춰주면 크게 문제 없이 풀 수 있었다. 생각이 필요했던 문제는 2439번 -별찍기 2 (브론즈 4) 였는데 어떤 방법으로 할지 고민하다가 다음과 같이 코드를 구현하였다. import java.util.*; import java.io.*; class Main{ public static int n; public static String s=""; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(..

BufferedWriter - 출력을 보다 빠르게!

코딩 테스트를 진행하다 입출력 관련 처리를 가장 먼저 하게 된다. 초기에는 Scanner를 이용하여 입출력을 처리하였지만, 속도 면에서 BufferedReader가 훨씬 빠른 처리가 가능한 것을 배우고 난 후로는 입력은 BufferedReader를 이용하여 처리하였다. 그럼 System.out.println()를 대체할 수 있는 방법은 없는가? 이번에는 출력을 대신하여 주는 BufferedWriter에 대하여 알아보자 우선 BufferedWriter는 Reader와 같이 java.io 패키지에 포함된 클래스 이다. BufferedWirter에 대하여 chatGPT에 질의해 보았다. BufferedWriter는 Java에서 텍스트 데이터를 파일에 쓰는 데 사용되는 클래스입니다. BufferedWriter는..

JAVA/입출력 2023.08.09

문자열 관리 - StringTokenizer와 Split() 메서드

코테 문제를 풀다보면 다음과 같은 입력 방식이 많이 보인다. 260000 4 20000 5 30000 2 10000 6 5000 8 위의 입력 형식을 살펴보면 처음 2줄은 총 결과 값과 for문을 돌릴 조건을 주고 그 아래에는 공백으로 구분된 입력 값이 들어오는 것을 확인 할 수 있다. 처음 구현할 때에는 Split 메서드를 이용하여 ArrayList에 String 배열 형태로 집어 넣고 꺼내쓰는 방식을 사용하였다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); T = Integer.parseInt(br.readLine()); ArrayList arr = new ArrayList(); for(int i = 0;i

JAVA/입출력 2023.08.08

백준 문제 풀이 - 조건문 단계

조건문 단계 역시 단순한 If문의 연속인 만큼 크게 어려운 문제는 없었다. 몇가지 기초적인 실수를 했던 것을 다시 한번 복습해본다. 9498번 - 시험 성적 (브론즈 5) class Main{ public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int point = sc.nextInt(); switch(point) case point >= 90 : System.out.println('A'); break; case point = 80 : System.out.println('B'); break; case point = 70 : Syst..

백준 문제 풀이 - 입출력과 사칙연산 단계

코딩 테스트를 준비하며 백준의 기본 문제를 단계별로 풀어보기로 하였다. 원래는 프로그래머스에서 코딩 테스트를 준비하고 있었는데, 프로그래머스에는 입출력 단계가 빠져있어 실제 코테와 환경이 조금 달랐다. 평소 IDE 환경에 익숙해 있었던 터라 아예 깡코딩으로 하는 백준이 더 도움이 될것 같아 백준으로 다시 문제를 풀어기로 하였다. 첫날에는 가볍게 입출력과 사칙연산 모든 문제를 풀어보는 것으로 시작하였다. 크게 어려운 것은 없었고 좀 생각해 봐야할 것은 BufferedReader 쪽이였는데, 기존에 항상 Scanner만 사용하던 방식과 달라 새로웠다. ChatGPT에게 BufferedReader에 대하여 물어보니 다음과 같은 답변을 받았다. BufferedReader 클래스는 Java의 입출력 스트림을 이용..