Java 코딩테스트 공부/Java 백준 문제풀이

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 10816번 문제 : 숫자 카드 2

문제 출처 : https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 : 풀이 : 소스코드 : import java.util.*; import java.io.*; class Main { public StringBuilder solution(int n, int[] nArr, int m, int[] mArr) { StringBuilder sb = new StringBuilder(); // nArr가 오름차순 정렬된 ..

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 1920번 문제 : 수 찾기

문제 출처 : https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 : 풀이 : 이분 탐색을 이용하면 해결될 문제지만 왠지 투포인터 알고리즘을 사용해 풀어보고 싶었다. 투포인터 알고리즘을 사용하기 위해선 mArr와 nArr 둘 다 정렬되어 있어야 하는데 문제는 mArr를 정렬시켜버리면 기존 인덱스(위치)도 섞여서 출력 시 1이 출력되는 위치도 변한다는 것이다. 그럼 HashMap을 사용해 기존 인..

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 10986번 문제 : 나머지 합

문제 출처 : https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 문제 : 풀이 : 누적 합을 저장한 배열을 생성하고 이용한다. s[i] % m == 0 인 경우, 인덱스 1부터 i까지의 누적 합이 m으로 나누어 떨어진다는 것이다. 인덱스 i부터 j까지의 구간 합은 s[j] - s[i-1] 이다. 구간 합이 m으로 떨어지는 경우를 구해야 한다. ( s[j] - s[i-1] ) % m = 0 해당 식을..

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 1990번 문제 : 소수인팰린드롬

제목 // 자바 백준 0번 문제 : 문제명 문제 출처 : https://www.acmicpc.net/problem/1990 1990번: 소수인팰린드롬 151은 소수이면서 동시에 팰린드롬이기 때문에 소수인 팰린드롬이다. 팰린드롬이란 앞으로 읽어나 뒤로 읽으나 같은 수를 말한다. 예를 들어 1234는 앞으로 읽으면 1234지만, 뒤로 읽으면 4321이 되 www.acmicpc.net 문제 : 풀이 : 에라토스테네스 체 이용해 소수 판별한 다음 팰린드롬인지 아닌지 판별해 출력한다. 소스코드 : import java.util.*; class Main { public boolean plndr(int n) { // 팰린드롬 판별 함수 String str = Integer.toString(n); String reve..

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 17609번 문제 : 회문

문제 출처 : https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 문제 : 풀이 : 회문인지 아닌지는 StringBuilder로 reverse()해서 확인하는 함수를 작성해둠 먼저 회문인지 아닌지 검사, 회문일 경우 바로 0 출력한다. 회문이 아닐 경우 유사회문인지, 둘 모두 해당되지 않는지 검사해야 하므로 투포인터를 왼쪽(lt) 오른쪽(rt)에 잡고 한칸씩 중앙으로 이동시키다 두 문자가 다른 경우 lt를 삭제한 문자열, rt를 삭제한 문자열을 각각 회문인지 아닌지 검사하는 함..

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 1991번 문제 : 트리 순회

문제 출처 : https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 문제 : 소스코드 : import java.util.*; import java.io.*; class Node { char value; Node lt, rt; Node(char value, Node lt, Node rt) { this.value = value; this.lt = lt; this.rt = rt; } } public class Main { Node root; p..

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 17298번 문제 : 오큰수

문제 출처 : https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제 : 풀이 : 세 가지 풀이 방식을 생각해서 풀었고, 첫 번째와 두 번째는 보기 좋게 틀렸다. 왜 틀렸는지 코드와 함께 정리해보고, 이후 정답 코드도 정리해보자 오답 코드 (시간 초과) : import java.util.*; import java.io.*; public class Main { public StringBuilder solution(int n, int[] arr) { Strin..

Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 9935번 문제 : 문자열 폭발

문제 출처 : https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 문제 : 풀이 : 스택과 StringBuilder를 이용해 문제를 해결하였다. 소스코드 : import java.util.*; import java.io.*; public class Main { public StringBuilder solution(String str, String boom) { StringBuilder sb = new StringBuilder(); S..

daramG
'Java 코딩테스트 공부/Java 백준 문제풀이' 카테고리의 글 목록