Post

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.