๋ฐ์ํ
Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MacOS
- ์ด์ง์ ๋ณํ
- Do_it
- ์ง ๊ฐ ์์ธก ๋ถ์
- ์ต์
- Extended Slices
- Do it
- jdbc
- DFS
- ๋ธ๋ผ์ฐ์ ์คํ
- PYTHON
- dacon
- ์ ํ ํฌ ํ์ด์ฌ
- ๋ฐ์ค๊ทธ๋ํ
- ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
- ์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉํ ์คํธ๋ค
- ํ๋ก๊ทธ๋๋จธ์ค
- mysql
- ๋ฐฑ์ค
- 2BPerfect
- ํ์ ๋ณ์
- BFS
- matplotlib
- ํฉํ ๋ฆฌ์ผ ์ง๋ฒ
- np.zeros_like
- ์์ด
- ์๋ฐ
- sql
- ์ฐธ์กฐ ๋ณ์
- java
Archives
- Today
- Total
๐ฆ ๊ณต๋ฃก์ด ๋์!
[๋ฐฑ์ค] Java ์ซ์์นด๋ 2 ๋ณธ๋ฌธ
1.
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String ns = sc.nextLine();
int m = sc.nextInt();
sc.nextLine();
String ms = sc.nextLine();
String[] na = ns.split(" ");
String[] ma = ms.split(" ");
int[] answer = new int[m];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (na[j].equals(ma[i])) {
answer[i]++;
}
}
if (i == m - 1) {
System.out.print(answer[i]);
} else {
System.out.print(answer[i] + " ");
}
}
}
}
- ์ต์ด์๋ ์๊ธฐ ๋ด์ฉ์ผ๋ก ์ฝ๋ฉ์ ํ์๋ค. ํ๋ฐ ์๊ฐ์ด๊ณผ.. ๊ธฐ์กด์ ํ๋ก๊ทธ๋๋จธ์ค๋์ ๋ค๋ฅด๊ฒ ์ผ๋ง๋ ํจ์จ์ ์ผ๋ก ์ฝ๋ฉ์ ํ๋์ง ์ธก์ ํ์๋ค.
2.
package tttt;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String ns =br.readLine();
int m =Integer.parseInt(br.readLine());
String ms = br.readLine();
String[] na = ns.split(" ");
String[] ma = ms.split(" ");
int[] answer = new int[m];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (na[j].equals(ma[i])) {
answer[i]++;
}
}
if (i == m - 1) {
System.out.print(answer[i]);
} else {
System.out.print(answer[i] + " ");
}
}
}
}
- ๋ค์์ Scanner๋์ฒดํ BufferedReader๋ฅผ ์ฌ์ฉํ์ผ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฐ ์ด๊ณผ๋ค..
- java์์ Scanner์ bufferdReader์ ๊ฒฝ์ฐ ์๋์ฐจ์ด๊ฐ ๊ฝค ๋๋ค. ๊ทธ๋ฐ๋ฐ๋ ๋ถ๊ตฌํ๊ณ ์๊ฐ์ด ์ด๊ณผ๊ฐ ๋๋ค๋ฉด ์ด์ค for๋ฌธ์์ ์๊ฐ์ ๋ง์ด ์ก๋ ๊ฒ ๊ฐ๋ค.
- ํฅ์๋ for๋ฌธ๊ณผ ์ผ๋ฐ for๋ฌธ๊ณผ ์๋์ฐจ์ด๋ ์ ๋ฐ์ ์ผ๋ก ํฅ์๋ for๋ฌธ์ด ์กฐ๊ธ ๋ ๋ง์ด ๊ฑธ๋ฆฐ๋ค๊ณ ํ๋ค.
3 .์ด๋ถ๋ฒ์ผ๋ก ํธ๋ ๋ฒ
- 1. scanner
๋๋ณด๊ธฐ
๋๋ณด๊ธฐ
import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int[] arr = new int[N];
for(int i = 0; i < N; i++) {
arr[i] = in.nextInt();
}
Arrays.sort(arr); // ์ด๋ถ ํ์์ ํ๊ธฐ ์ํด์๋ ๋ฐ๋์ ์ ๋ ฌ๋์ด์์ด์ผ ํ๋ค.
int M = in.nextInt();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < M; i++) {
int key = in.nextInt();
// upperBound์ lowerBound์ ์ฐจ์ด ๊ฐ์ ๊ตฌํ๋ค.
sb.append(upperBound(arr, key) - lowerBound(arr, key)).append(' ');
}
System.out.println(sb);
}
private static int lowerBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
// lo๊ฐ hi๋ ๊ฐ์์ง ๋ ๊น์ง ๋ฐ๋ณต
while (lo < hi) {
int mid = (lo + hi) / 2; // ์ค๊ฐ์์น๋ฅผ ๊ตฌํ๋ค.
/*
* key ๊ฐ์ด ์ค๊ฐ ์์น์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ
*
* (์ค๋ณต ์์์ ๋ํด ์ผ์ชฝ์ผ๋ก ํ์ํ๋๋ก ์๊ณ๋ฅผ ๋ด๋ฆฐ๋ค.)
*/
if (key <= arr[mid]) {
hi = mid;
}
else {
lo = mid + 1;
}
}
return lo;
}
private static int upperBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
// lo๊ฐ hi๋ ๊ฐ์์ง ๋ ๊น์ง ๋ฐ๋ณต
while (lo < hi) {
int mid = (lo + hi) / 2; // ์ค๊ฐ์์น๋ฅผ ๊ตฌํ๋ค.
// key๊ฐ์ด ์ค๊ฐ ์์น์ ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ
if (key < arr[mid]) {
hi = mid;
}
// ์ค๋ณต์์์ ๊ฒฝ์ฐ else์์ ์ฒ๋ฆฌ๋๋ค.
else {
lo = mid + 1;
}
}
return lo;
}
}
- ์์ ์ฝ๋๊ฐ ๊ทธ๋๋ ๋์ ์ ์ผ ์ต์ ๊ฒ์ด๋ค.
for(int i = 0; i < M; i++) {
int key = in.nextInt();
// upperBound์ lowerBound์ ์ฐจ์ด ๊ฐ์ ๊ตฌํ๋ค.
sb.append(upperBound(arr, key) - lowerBound(arr, key)).append(' ');
}
System.out.println(sb);
}
- lowerBound์ upperBound์ ์์ฑ ์ด์ ๋ ์ด๋ถ๋ฒ์ผ๋ก ์ฐพ์ ์ค๋ณต๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋นผ์ ๊ทธ ๊ฐฏ์๋ฅผ ๋ฐํํ๊ธฐ ์ํด์์ด๋ค.
private static int lowerBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
// lo๊ฐ hi๋ ๊ฐ์์ง ๋ ๊น์ง ๋ฐ๋ณต
while (lo < hi) {
int mid = (lo + hi) / 2; // ์ค๊ฐ์์น๋ฅผ ๊ตฌํ๋ค.
/*
* key ๊ฐ์ด ์ค๊ฐ ์์น์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ
*
* (์ค๋ณต ์์์ ๋ํด ์ผ์ชฝ์ผ๋ก ํ์ํ๋๋ก ์๊ณ๋ฅผ ๋ด๋ฆฐ๋ค.)
*/
if (key <= arr[mid]) {
hi = mid;
}
else {
lo = mid + 1;
}
}
return lo;
}
- ์ฐ์ lowerBound๋ ์ค๋ณต ๊ฐ ์ค ์ธ๋ฑ์ค๊ฐ ์ ์ผ ๋ฎ์ ์๋ฅผ ์ฐพ๋ ๊ฒ์ด๊ณ
private static int upperBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
// lo๊ฐ hi๋ ๊ฐ์์ง ๋ ๊น์ง ๋ฐ๋ณต
while (lo < hi) {
int mid = (lo + hi) / 2; // ์ค๊ฐ์์น๋ฅผ ๊ตฌํ๋ค.
// key๊ฐ์ด ์ค๊ฐ ์์น์ ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ
if (key < arr[mid]) {
hi = mid;
}
// ์ค๋ณต์์์ ๊ฒฝ์ฐ else์์ ์ฒ๋ฆฌ๋๋ค.
else {
lo = mid + 1;
}
}
return lo;
}
}
- upperBound๋ ์ค๋ณต ๊ฐ ์ค ์ธ๋ฑ์ค๊ฐ ์ ์ผ ๋์ ์๋ฅผ ์ฐพ๋ ๊ฒ์ด๋ค.
- 2. BufferedReader+StringTokenizer
๋๋ณด๊ธฐ
๋๋ณด๊ธฐ
import java.util.Arrays;
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int M = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine()," ");
StringBuilder sb = new StringBuilder();
for(int i = 0; i < M; i++) {
int key = Integer.parseInt(st.nextToken());
// upperBound์ lowerBound์ ์ฐจ์ด ๊ฐ์ ๊ตฌํ๋ค.
sb.append(upperBound(arr, key) - lowerBound(arr, key)).append(' ');
}
System.out.println(sb);
}
private static int lowerBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
// lo๊ฐ hi๋ ๊ฐ์์ง ๋ ๊น์ง ๋ฐ๋ณต
while (lo < hi) {
int mid = (lo + hi) / 2; // ์ค๊ฐ์์น๋ฅผ ๊ตฌํ๋ค.
/*
* key ๊ฐ์ด ์ค๊ฐ ์์น์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ
*
* (์ค๋ณต ์์์ ๋ํด ์ผ์ชฝ์ผ๋ก ํ์ํ๋๋ก ์๊ณ๋ฅผ ๋ด๋ฆฐ๋ค.)
*/
if (key <= arr[mid]) {
hi = mid;
}
else {
lo = mid + 1;
}
}
return lo;
}
private static int upperBound(int[] arr, int key) {
int lo = 0;
int hi = arr.length;
// lo๊ฐ hi๋ ๊ฐ์์ง ๋ ๊น์ง ๋ฐ๋ณต
while (lo < hi) {
int mid = (lo + hi) / 2; // ์ค๊ฐ์์น๋ฅผ ๊ตฌํ๋ค.
// key๊ฐ์ด ์ค๊ฐ ์์น์ ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ
if (key < arr[mid]) {
hi = mid;
}
// ์ค๋ณต์์์ ๊ฒฝ์ฐ else์์ ์ฒ๋ฆฌ๋๋ค.
else {
lo = mid + 1;
}
}
return lo;
}
}
- StringTokenizer
๋๋ณด๊ธฐ
๋๋ณด๊ธฐ
StringTokenizer st = new StringTokenizer(๋ฌธ์์ด);
StringTokenizer st = new StringTokenizer(๋ฌธ์์ด, ๊ธฐ์ค๋ฌธ์);
StringTokenizer st = new StringTokenizer(๋ฌธ์์ด,๊ธฐ์ค๋ฌธ์,True/False);
while(st.hasMoreTokens())
- ์ค๋ณต๋๋ ์ํ ์ธ๋ฑ์ค๊ฐ - ํํ ์ธ๋ฑ์ค๊ฐ
for(int i = 0; i < M; i++) {
int key = Integer.parseInt(st.nextToken());
// upperBound์ lowerBound์ ์ฐจ์ด ๊ฐ์ ๊ตฌํ๋ค.
sb.append(upperBound(arr, key) - lowerBound(arr, key)).append(' ');
}
System.out.println(sb);
}
4. HashMap
๋๋ณด๊ธฐ
๋๋ณด๊ธฐ
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
/*
* HashMap<Key, Value>
* Key = ์
๋ ฅ๋๋ ์์
* Value = ์์์ ๊ฐ์(=์ค๋ณต ์
๋ ฅ ๋ ์์์ ์)
*/
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N; i++) {
int key = Integer.parseInt(st.nextToken());
/*
* getOrDefault(key, defaultValue)
* key์ ๋ํด map์ ์ ์ฅ ๋ value๋ฅผ ๋ฐํํ๋ค.
* ๋ง์ฝ value๊ฐ ์์ ๊ฒฝ์ฐ defaultValue๊ฐ์ ๋ฐํํ๋ค.
*/
map.put(key, map.getOrDefault(key, 0) + 1);
}
int M = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < M; i++) {
int key = Integer.parseInt(st.nextToken());
sb.append(map.getOrDefault(key, 0)).append(' ');
}
System.out.println(sb);
}
}
for(int i = 0; i < N; i++) {
int key = Integer.parseInt(st.nextToken());
/*
* getOrDefault(key, defaultValue)
* key์ ๋ํด map์ ์ ์ฅ ๋ value๋ฅผ ๋ฐํํ๋ค.
* ๋ง์ฝ value๊ฐ ์์ ๊ฒฝ์ฐ defaultValue๊ฐ์ ๋ฐํํ๋ค.
*/
map.put(key, map.getOrDefault(key, 0) + 1);
}
- key์ ์นด๋์ ๊ฐ์ ๋ฃ๊ณ ๊ฐฏ์๋ฅผ ์ผ๋ค.
int M = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < M; i++) {
int key = Integer.parseInt(st.nextToken());
sb.append(map.getOrDefault(key, 0)).append(' ');
}
System.out.println(sb);
}
}
- key์ ๊ฐ์ ๋ถ๋ฌ์ StringBuilder๊ฐ์ฒด ๋ง๋ค๊ณ ์ถ๋ ฅ
์ถ์ฒ : https://st-lab.tistory.com/267
[๋ฐฑ์ค] 10816๋ฒ : ์ซ์ ์นด๋ 2 - JAVA [์๋ฐ]
https://www.acmicpc.net/problem/10816 10816๋ฒ: ์ซ์ ์นด๋ 2 ์ฒซ์งธ ์ค์ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ซ์ ์นด๋์ ๊ฐ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์ซ์ ์นด๋์ ์ ํ์๋ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ซ์ ์นด..
st-lab.tistory.com
๋ฐ์ํ
'Development > CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์์ด] Visited๋ฅผ ์ด์ฉํ ์์ด (0) | 2021.12.24 |
---|---|
[์์ด] Swap์ ์ด์ฉํ ์์ด (0) | 2021.12.23 |
[ํ๋ก๊ทธ๋๋จธ์ค] Java ๋ชจ์๊ณ ์ฌ (0) | 2021.12.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] Java ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (2) | 2021.12.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] Java ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2021.12.13 |
Comments