자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 2. Array(1)

2024. 2. 13. 16:46Algorithm/inflearn

 

1. 큰 수 출력하기

 

<나의 풀이>

- 이전 숫자를 bfNum이라는 변수에 저장하여, 현재 수 n과 비교하여 n이 더크면 출력

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n=Integer.parseInt(br.readLine());
		String s=br.readLine();
		StringTokenizer st = new StringTokenizer(s);
		
		int bfNum=Integer.MIN_VALUE;
		
		StringBuilder sb = new StringBuilder();
		
		for(int i=0;i<n;i++) {
			int num=Integer.parseInt(st.nextToken());
			if(num>bfNum) {
				sb.append(num+" ");
			}
			bfNum=num;
		}
		
		System.out.println(sb.toString().trim());
	}

}

 

<해설>

- 배열 arr에 숫자를 저장

- solution메소드: arr을 순서대로 가져와서 이전값과 비교하여 더 크면 answer 리스트에 저장

- 리스트 형태로 반환 후, 반복하며 출력

package inflearn_java;


import java.util.*;

public class Ex2_1_answer {

	public ArrayList<Integer> solution(int n, int[] arr){
		ArrayList<Integer> answer = new ArrayList<>();
		answer.add(arr[0]);
		for(int i=1; i<n; i++){
			if(arr[i]>arr[i-1]) answer.add(arr[i]);
		}
		return answer;
	}

	public static void main(String[] args){
		Ex2_1_answer T = new Ex2_1_answer();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		int[] arr=new int[n];
		for(int i=0; i<n; i++){
			arr[i]=kb.nextInt();
		}
		for(int x : T.solution(n, arr)){
			System.out.print(x+" ");
		}
	}

}

 

 


 

 

2. 보이는 학생

 

<나의 풀이>

- 앞에 서있는 사람이 한명이라도 크면 안보임

- 한명 지날 때 마다 제일 크면 cnt를 1증가시키고, maxHeight 키를 해당 사람 키를 변경

- cnt: 보이는 사람 수, maxHeight: 최대 키

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n=Integer.parseInt(br.readLine());
		String s=br.readLine();
		StringTokenizer st = new StringTokenizer(s);
		
		int maxHeight=Integer.MIN_VALUE;
		int cnt=0;
		StringBuilder sb = new StringBuilder();
		
		for(int i=0;i<n;i++) {
			int height=Integer.parseInt(st.nextToken());
			if(height>maxHeight) {
				cnt++;
				maxHeight=height;
			}
		}
		
		System.out.println(sb.append(cnt).toString());

	}

}

 

<해설>

package inflearn_java;

import java.util.*;

public class Ex2_2_answer {

	public int solution(int n, int[] arr){
		int answer=1, max=arr[0];
		for(int i=1; i<n; i++){
			if(arr[i]>max){
				max=arr[i];
				answer++;
			}
		}
		return answer;
	}
	public static void main(String[] args){
		Ex2_2_answer T = new Ex2_2_answer();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		int[] arr=new int[n];
		for(int i=0; i<n; i++){
			arr[i]=kb.nextInt();
		}
		System.out.print(T.solution(n, arr));
	}

}

 

3. 가위 바위 보

 

<나의 풀이>

- a가 게임마다 낸 정보들은 aNums 라는 배열에 저장

- b가 낸 정보 하나씩 읽을 때 마다 a 가 낸 정보와 비교하여 결과 값 출력

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	
	public static String game(int a, int b) {
		
		String answer="A";
		
		if(a==b) {
			answer="D";
		}else if(a==1) {
			if(b==2) answer="B";
		}else if(a==2) {
			if(b==3) answer="B";
		}else if(a==3) {
			if(b==1) answer="B";
		}
		
		return answer;
	}

	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n=Integer.parseInt(br.readLine());
		String s=br.readLine();
		StringTokenizer st = new StringTokenizer(s);
		
		//a
		int aNums[] = new int[n];
		for(int i=0;i<n;i++) {
			aNums[i]=Integer.parseInt(st.nextToken());
		}
		
		//b
		s=br.readLine();
		st = new StringTokenizer(s);
		StringBuilder sb = new StringBuilder();
		for(int i=0;i<n;i++) {
			sb.append(game(aNums[i],Integer.parseInt(st.nextToken()))+"\n");
		}
		
		System.out.println(sb.toString().trim());
	}

}

 

 

<해설>

package inflearn_java;

import java.util.*;

public class Ex2_3_answer {
	public String solution(int n, int[] a, int[] b){
		String answer="";
		for(int i=0; i<n; i++){
			if(a[i]==b[i]) answer+="D";
			else if(a[i]==1 && b[i]==3) answer+="A";
			else if(a[i]==2 && b[i]==1) answer+="A";
			else if(a[i]==3 && b[i]==2) answer+="A";
			else answer+="B";
		}
		return answer;
	}
	public static void main(String[] args){
		Ex2_3_answer T = new Ex2_3_answer();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		int[] a=new int[n];
		int[] b=new int[n];
		for(int i=0; i<n; i++){
			a[i]=kb.nextInt();
		}
		for(int i=0; i<n; i++){
			b[i]=kb.nextInt();
		}
		for(char x : T.solution(n, a, b).toCharArray()) System.out.println(x);
	}
}