자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 2. Array(1)
2024. 2. 13. 16:46ㆍAlgorithm/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);
}
}
'Algorithm > inflearn' 카테고리의 다른 글
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 2. Array(3) (0) | 2024.02.20 |
---|---|
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 2. Array(2) (0) | 2024.02.19 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 1. 문자열(3) (1) | 2024.02.07 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 1. 문자열(2) (1) | 2024.02.06 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 1. 문자열(1) (0) | 2024.02.05 |