baekjoon 4단계 1차원 배열
기록용 baekjoon 단계별 풀이입니다. 언어 : Java
10807번
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
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
int n = Integer.parseInt(bf.readLine()); //한 줄 형변환하여 입력 받기
int[] arr = new int[n]; //입력 받은 정수 길이의 배열 선언
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
//readLine()을 통해 한 줄을 입력 받고 공백으로 구분함
int cnt = 0;
for(int i=0;i<n;i++)
{
arr[i] = Integer.parseInt(st.nextToken()); //공백으로 구분하여 입력해서 배열에 저장
}
int v = Integer.parseInt(bf.readLine()); //한 줄 형변환하여 입력 받기
for(int i=0;i<n;i++)
{
if(arr[i]==v) //배열으로 입력한 값이 v와 같다면
{
cnt++; //count 하기
}
}
System.out.println(cnt);
}
}
10871번
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
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
//readLine()을 통해 한 줄을 입력 받고 공백을 통해 구분함
int n = Integer.parseInt(st.nextToken()); //첫번째 토큰을 입력 받음
int x = Integer.parseInt(st.nextToken()); //두번째 토큰을 입력 받음
int[] arr = new int[n]; //첫번째 입력한 변수 길이의 배열 생성
int xx;
st = new StringTokenizer(bf.readLine()," ");
//readLine()을 통해 한 줄을 입력 받고 공백을 통해 구분함
for(int i=0;i<n;i++)
{
arr[i] = Integer.parseInt(st.nextToken()); //배열의 값 입력해서 arr 변수에 저장
}
for(int i=0;i<n;i++)
{
if(arr[i]<x) // 두번째 입력한 수보다 값이 작을경우
{
xx=arr[i]; //해당 배열에 있는 값을 xx 변수에 저장
System.out.print(xx+" ");
}
}
}
}
10818번
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
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
int n = Integer.parseInt(bf.readLine());
//한 줄 형변환하여 입력 받음
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
//readLine()을 통해 한 줄 입력 받고 공백을 통해 토큰을 구분함
int[] arr = new int[n]; //첫번째 입력한 변수 길이의 배열 선언
int max = Integer.parseInt(st.nextToken()); //첫번째 토큰 입력하여 max로 선언
int min = max;
for(int i=1;i<n;i++)
{
arr[i] = Integer.parseInt(st.nextToken()); //n-1개 길이의 배열 생성
if(arr[i]>max) //최대값 구하기
{
max = arr[i];
}
if(arr[i]<min) //최소값 구하기
{
min = arr[i];
}
}
System.out.println(min+ " "+max);
}
}
2562번
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
int[] arr = new int[10]; //배열 선언
int max = 0;
int value=0;
for(int i=1;i<=9;i++)
{
arr[i] = Integer.parseInt(bf.readLine()); //한줄씩 입력 받음
if(arr[i]>max)
{
max = arr[i];
value = i;
}
}
System.out.print(max+"\n"+value);
}
}
10810번
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
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
// readLine()을 이요하여 한 줄을 입력받고 공백을 통해 토큰 구분
int n = Integer.parseInt(st.nextToken()); //첫번째 토큰 입력
int m = Integer.parseInt(st.nextToken()); //두번째 토큰 입력
int[] arr = new int[n]; //첫번째 입력한 변수 길이의 배열 생성
for(int i=0;i<m;i++)
{
st = new StringTokenizer(bf.readLine()," ");
int I = Integer.parseInt(st.nextToken());
int J = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for(int j=I-1;j<J;j++) //배열이 0부터 시작하므로 시작 배열 arr[I-1]~arr[J-1]까지 K의 수 입력
{
arr[j] = K;
}
}
for(int i=0;i<n;i++)
{
System.out.print(arr[i]+" ");
}
}
}
10813번
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
32
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
//readLine()을 통해 한 줄 입력 받고 토큰을 공백으로 구분함
int n = Integer.parseInt(st.nextToken()); //첫번째 토큰 입력 받음
int m = Integer.parseInt(st.nextToken()); //두번째 토큰 입력 받음
int[] arr = new int[n]; //첫번째 입력한 변수의 길이만큼 배열 생성
for(int i=0; i<n; i++) //배열을 초기화 할 때는 무조건 0부터 시작해야 함
{
arr[i] = i+1;
}
for(int i=0;i<m;i++)
{
st = new StringTokenizer(bf.readLine()," ");
int I = Integer.parseInt(st.nextToken());
int J = Integer.parseInt(st.nextToken());
int tmp = arr[I-1]; //두 수 교환, 배열은 0부터 시작이므로 arr[I-1] arr[I-1] = arr[J-1];
arr[J-1] = tmp;
}
for(int i=0;i<n;i++)
{
System.out.print(arr[i]+" ");
}
}
}
- 💡 배열
arr
을 초기화할 때,arr
의 인덱스는 0부터 시작해야 함.
5597번 - 다시
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
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
int[] arr = new int[31];
StringTokenizer st;
for(int i=1;i<=28;i++) //과제를 한 학생
{
st = new StringTokenizer(bf.readLine()," "); //공백으로 토큰 구분
int student = Integer.parseInt(st.nextToken()); //28개의 학생 번호 입력
arr[student] = 1; //해당 학생들의 값을 1로 초기화
}
for(int i=1;i<=30;i++) //전체 학생
{
if(arr[i]!=1) //과제를 하지 않은 학생
{
System.out.println(i);
}
}
}
}
3052번 - 다시
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
32
33
34
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
//키보드 입력 바이트 스트림을 char 타입으로 처리 후, String 타입으로 변환하여 저장
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
for(int i=0;i<n;i++)
{
arr[i] = i+1;
}
for(int i=0;i<m;i++)
{
st = new StringTokenizer(bf.readLine()," ");
int I = Integer.parseInt(st.nextToken())-1;
int J = Integer.parseInt(st.nextToken())-1;
while(I<J)
{
int temp = arr[I];
arr[I++] = arr[J];
arr[J--] = temp;
}
}
for(int i=0;i<n;i++)
{
System.out.print(arr[i]+" ");
}
}
}
1
2
Index: 1 2 3 4 5
Array: [ 2 1 4 3 5 ]
- 여기서 I가 1이고 J가 4라고 하면 arr[0]부터 arr[3]까지의 구간을 뒤집어야 함.
1 2 3 4
Index: 1 2 3 4 5 Array: [ 2 1 4 3 5 ] ↑ ↑ I J
- arr[I]와 arr[J]를 교환함. I를 증가시키고(I++), J를 감소함(J–)
1 2
1st swap: [ 3 1 4 2 5 ] **(I=2, J=3)** 2nd swap: [ 3 4 1 2 5 ] **(I=3, J=2)**
- I가 J보다 크게되므로 루프를 종료함.
1546번
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
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
double[] arr = new double[n];
double max = 0.0;
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
for(int i=0;i<n;i++)
{
arr[i] = Integer.parseInt(st.nextToken());
if(arr[i]>max)
{
max = arr[i];
}
}
double avg=0.0;
for(int i=0;i<n;i++)
{
avg += (arr[i]/max)*100;
}
System.out.println(avg/n);
}
}
This post is licensed under CC BY 4.0 by the author.