오늘의 취준/오늘의 코테

[JAVA] 알고리즘 문제풀이 입문 2-3, 2-4번

gogoem 2023. 5. 22. 12:58
728x90

강의: https://inf.run/w779

 

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 

2-3번

import java.util.Scanner;
 
public class Main {

  public String[] solution(int[] arra, int[] arrb, int n){
    String[] answer = new String[n];
    for(int i = 0; i < n; i++){
      if(Math.abs(arra[i]-arrb[i]) == 1){
        if(arra[i] < arrb[i]){
          answer[i] = "B";
        }else{
          answer[i] = "A";
        }
      }else if(Math.abs(arra[i]-arrb[i]) == 2){
        if(arra[i] < arrb[i]){
          answer[i] = "A";
        }else{
          answer[i] = "B";
        }
      }else answer[i] = "D";
    }

    return answer;
  }

  public static void main(String[] args){
    Main m = new Main();
    Scanner in = new Scanner(System.in);
    int num = in.nextInt();
    int[] arra = new int[num];
    int[] arrb = new int[num];
    for(int i = 0; i < num; i++){
      arra[i] = in.nextInt();
    }
    for(int i = 0; i < num; i++){
      arrb[i] = in.nextInt();
    }
    in.close();

    String[] answer = m.solution(arra, arrb, num);
 
    for(int i = 0; i < num; i++)
      System.out.println(answer[i]);
    return ;
  }
}

 

solution의 리턴 형식을 배열이 아니라 string으로 설정하면

맨 마지막 결과 출력을 for each로 더 고수답게 할 수 있음 

 
import java.util.Scanner;
 
public class Main {

  public String solution(int[] arra, int[] arrb, int n){
    String answer = "";
    for(int i = 0; i < n; i++){
      if(Math.abs(arra[i]-arrb[i]) == 1){
        if(arra[i] < arrb[i]){
          answer += "B";
        }else{
          answer += "A";
        }
      }else if(Math.abs(arra[i]-arrb[i]) == 2){
        if(arra[i] < arrb[i]){
          answer += "A";
        }else{
          answer += "B";
        }
      }else answer += "D";
    }
    return answer;
  }

  public static void main(String[] args){
    Main m = new Main();
    Scanner in = new Scanner(System.in);
    int num = in.nextInt();
    int[] arra = new int[num];
    int[] arrb = new int[num];
    for(int i = 0; i < num; i++){
      arra[i] = in.nextInt();
    }
    for(int i = 0; i < num; i++){
      arrb[i] = in.nextInt();
    }
    in.close();

    for (char x : m.solution(arra, arrb, num).toCharArray()) {
      System.out.println(x);
    }
  }
}

요렇게~~

 

*절댓값 구하기 : Math.abs(수);

 

 

 

2-4번

import java.util.Scanner;
 
public class Main {

  public String solution(int n){
    String answer = "";
    int pre = 0;
    int now = 1;
    int p = 0;

    for(int i = 0; i < n; i++){
      answer += now + " ";
      p = pre;
      pre = now;
      now += p;
    }
    return answer;
  }

  public static void main(String[] args){
    Main m = new Main();
    Scanner in = new Scanner(System.in);
    int num = in.nextInt();
    in.close();

      System.out.println(m.solution(num));
  }
}

 

main 으로 리턴하지 않고 solution 메소드에서 바로 출력하기

import java.util.Scanner;
 
public class Main {

  public void solution(int n){
    int pre = 0;
    int now = 1;
    int p = 0;

    for(int i = 0; i < n; i++){
      System.out.print(now + " ");
      p = pre;
      pre = now;
      now += p;
    }
  }

  public static void main(String[] args){
    Main m = new Main();
    Scanner in = new Scanner(System.in);
    int num = in.nextInt();
    in.close();

    m.solution(num);
  }
}