Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

집 짓는 개발블로그

Java 기초(2일차) 본문

Java

Java 기초(2일차)

취준er 2023. 8. 6. 01:30

 

Scanner(입력 받기)

import java.util.Scanner; 
	
    
class Main{
	public static void main(String[] args){
    	Scanner sc = new Scanner(System.in);
    }
}
  • 자바의 기본 제공 라이브러리 java.util로부터 Scanner를 import한다.
  • Scanner 클래스를 불러왔으니 객체를 생성해야 이용 가능.

 

 

아래는 백준 연습문제 정리


고양이(10171)

escape(이스케이프 문자) : 문자열 내에서 특수한 기능 수행하는 문자

\' : 따옴표 출력(')
\" : 큰따옴표 출력(")
\n : 개행문자, 줄을 바꿔줌
\t : 탭문자
\\ : 역슬래시

주사위 세개(2480)

제출한 코드

import java.util.Scanner;
import java.util.Arrays;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int[] arr = {a, b, c};
        int returning = 0;
        if (a==b && b==c){
            returning = 10000 + 1000*a;
        }else if (a==b && b!=c){
            returning = 1000 + a*100;
        }else if (a==c && a!=b){
            returning = 1000 +a*100;
        }else if (b==c && b!=a){
            returning = 1000 + b*100;
        }else{
            returning = 100 * Arrays.stream(arr).max().getAsInt();
        }
        System.out.println(returning);
    }
}
  • 첫 번째에 a==b==c로 썼다가 에러 남. 자바에서는 a==b까지 간 시점에 이미 boolean(true 또는 false) 결과가 나오기 때문에 int인 c와 비교할 수 없다.
  • 자바에서 == 연산자는 객체를 비교하는 연산자
    • primitive 타입(int, float 등)은 바로 비교 가능
    • reference 타입(string, array 등)은 String 클래스의 equals() 써서 비교해야 함
      • equals()는 객체가 다르더라도 문자열 값만 비교함

공 넣기(10810)

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        int[] basket = new int[N];
        int[][] arr = new int[M][3];
        for (int i = 0; i < M; i++) {
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
            arr[i][2] = sc.nextInt();
        }
        for (int j = 0; j < M; j++) {
            for (int k = 0; k <= arr[j][1] - arr[j][0]; k++) {
                basket[arr[j][0] + k-1] = arr[j][2];
            }
        }
        for (int h = 0;h<N;h++){
            System.out.print(basket[h] + " ");
        }

    }
}

문제에서 정의하는 새로운 인덱스 주의하기

문제의 바구니는 1번에서 시작 =/= 내 인덱스는 0번에서 시작


공 바꾸기(10813)

제출한 코드

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        int temp = 0;
        int[] basket = new int[N];
        int[][] arr = new int[M][2];
        for (int i = 0; i<M; i++){
            arr[i][0] = sc.nextInt();
            arr[i][1] = sc.nextInt();
        }
        for(int k = 0;k<N;k++){
            basket[k] = k+1;
        }
        for (int j =0;j<M;j++){
            int h = arr[j][0];
            int h2 = arr[j][1];
            temp = basket[h-1];
            basket[h-1] = basket[h2-1];
            basket[h2-1] = temp;
        }
        for (int i = 0;i<N;i++){
            System.out.print(basket[i] + " ");
        }

    }
}
  • 역시 index는 0에서 시작하지만 바구니는 1번에서 시작하는 부분이 문제였음