코딩테스트 준비540 [백준] 13414번 - 수강신청 [Java] https://www.acmicpc.net/problem/13414 1. 아이디어 LinkedHashSet 자료구조를 활용하면 간단하게 해결할 수 있다.2. 문제풀이 수강신청 과정은 순서가 있고 성공, 실패 두 가지로 나뉜다는 점에서 이 두 가지를 한번에 다룰 수 있는 LinkedHashSet 자료구조를 이용했다. 버튼을 누른 순서로 대기목록에 들어가고 버튼을 한번 더 누르면 대기목록의 맨 뒤로 밀려나는건 LinkedHashSet에 존재하지 않는 학번이면 넣고 존재하는 학번이면 LinkedHashSet의 학번을 제거하고 새로 넣는 방식으로 구현할 수 있다. 일반 HashSet은 순회 과정에서 넣은 순서로 나오지 않아서 사용하지 않았고, 학번은 앞자리가 0인 경우가 있어서 String 타입으로 받아서 처.. 2024. 12. 23. [백준] 1431번 - 시리얼 번호 [Java] https://www.acmicpc.net/problem/1431 1. 아이디어 여러 조건을 만족하는 정렬은 람다식을 활용해서 구현할 수 있다.2. 문제풀이 시리얼 번호를 담은 List를 조건에 맞게 정렬하는 방식으로 구현했는데 sort 메서드에 람다식을 넣어서 길이가 다르면 Integer.compare 메서드로 반환을 하고 반환이 안됐으면 다음 자리수의 합을 비교해서 다르면 다시 반환을 했다. 여기서도 반환이 안되면 사전순으로 비교를 해야하는데 String의 compareTo는 기본이 사전순 비교이므로 이를 적용하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(Strin.. 2024. 12. 23. [백준] 1351번 - 무한 수열 [Java] https://www.acmicpc.net/problem/1351 1. 아이디어 Top-Down 방식의 다이나믹 프로그래밍과 HashMap을 통한 메모이제이션으로 해결할 수 있다.2. 문제풀이 수열의 특정 원소를 구하기 위해서 수열의 다른 두 원소의 합을 구해야 한다. 다른 두 원소도 역시 또 다른 두 원소의 합으로 이루어져 있고 해당 과정이 재귀적이므로 깊이 우선 탐색을 통해 구할 수 있다. 다만 이 과정에서 계산의 중복을 줄이기 위해 메모이제이션이 필요하고 수열의 길이가 int형 범위를 넘어갈 수 있어서 배열 대신 HashMap을 이용해서 메모이제이션을 했다.3. 코드 import java.io.*;import java.util.*;public class Main { private static.. 2024. 12. 23. [백준] 10814번 - 나이순 정렬 [Java] https://www.acmicpc.net/problem/10814 1. 아이디어 클래스에서 Comparable 인터페이스를 구현하는 방식으로 객체간 정렬을 할 수 있다.2. 문제풀이 회원 객체를 Member 클래스를 통해 생성하는데 이때 Comparable 인터페이스의 compareTo 메서드를 구현해서 나이 순, 나이가 같으면 가입한 순으로 정렬하도록 기준을 설정하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { static class Member implements Comparable { int age; String name; public Member(int age, .. 2024. 12. 23. [백준] 11656번 - 접미사 배열 [Java] https://www.acmicpc.net/problem/11656 1. 아이디어 String의 substring 메서드를 이용해서 접미사를 간단하게 추출할 수 있다.2. 문제풀이 substring 메서드로 뽑은 접미사를 List에 넣은 후 정렬하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new Buffere.. 2024. 12. 23. [백준] 11652번 - 카드 [Java] https://www.acmicpc.net/problem/11652 1. 아이디어 Map 자료구조를 활용하면 정수와 그 개수를 간단하게 처리할 수 있다.2. 문제풀이 Map 자료구조에서 key에 정수, value에 정수의 개수를 저장한 후 향상된 for으로 Map을 순회하며 가장 많이 가지고 있는 정수를 구하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .. 2024. 12. 23. [백준] 1181번 - 단어 정렬 [Java] https://www.acmicpc.net/problem/1181 1. 아이디어 중복된 단어를 제거한 후 정렬하는데 Set 자료구조를 먼저 사용하고 이를 다시 List 자료구조로 변환하면 된다.2. 문제풀이 자바의 List는 생성자에 Collection을 받을 수 있어서 Set을 활용해 먼저 중복을 제거한 후 이를 List로 변환했다.두 가지 정렬 조건은 List의 sort 메서드에서 Comparator에 람다식을 넣는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br.. 2024. 12. 23. [백준] 10867번 - 중복 빼고 정렬하기 [Java] https://www.acmicpc.net/problem/10867 1. 아이디어 수의 범위가 주어져 있고 범위가 크지 않기 때문에 boolean 타입 배열로 방문 체크를 해서 구현했다.2. 문제풀이 방문 체크 배열에서 수가 음수인 경우를 고려해서 인덱스를 배정하면 간단하게 해결할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { private static final int MAX = 1000; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(S.. 2024. 12. 23. [백준] 9316번 - Hello Judge [Java] https://www.acmicpc.net/problem/9316 1. 아이디어 StringBuilder와 for문을 이용해서 조건에 맞게 간단하게 출력할 수 있다.2. 문제풀이 append 메서드로 문자열을 더해서 구현했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); .. 2024. 12. 23. [백준] 3058번 - 짝수를 찾아라 [Java] https://www.acmicpc.net/problem/3058 1. 아이디어 모률러 연산으로 홀수와 짝수를 구분할 수 있다.2. 문제풀이 최솟값은 Math.min 메서드를 활용해서 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); .. 2024. 12. 23. [백준] 4470번 - 줄번호 [Java] https://www.acmicpc.net/problem/4470 1. 아이디어 BufferedReader와 BufferedWriter를 이용해서 빠른 I/O로 구현햇다.2. 문제풀이 StringBuilder를 활용해서 포맷팅을 해줬다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.ou.. 2024. 12. 12. [백준] 11719번 - 그대로 출력하기 2 [Java] https://www.acmicpc.net/problem/11719 1. 아이디어 BufferedReader와 BufferedWriter를 이용해서 빠른 I/O로 구현햇다.2. 문제풀이 아이디어 그대로 구현하면 된다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); .. 2024. 12. 12. 이전 1 ··· 34 35 36 37 38 39 40 ··· 45 다음