728x90
📍 섹션2. Array(1, 2차원 배열) 섹션
배열(Array) 섹션 - (1)
2-1. 큰 수 출력하기
- 첫 번째 수는 반드시 출력할 것. + 앞수보다 크면 answer에 이어붙임
import java.util.ArrayList;
import java.util.Scanner;
/* 2-1. 큰 수 출력하기
* 설명
N개의 정수를 입력받아, '자신의 바로 앞 수'보다 큰 수만 출력하는 프로그램을 작성하세요.
(첫 번째 수는 무조건 출력한다)
* */
public class Main1 {
//솔루션 함수
public ArrayList<Integer> solution(int n, int[] arr) {
ArrayList<Integer> answer = new ArrayList<>();
answer.add(arr[0]); //첫수 무조건 넣기
//현재 수가 바로 앞수보다 크면 answer에 붙임
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) {
// TODO Auto-generated method stub
Main1 T = new Main1();
Scanner kb = new Scanner(System.in);
//1) 입력 N
int n = kb.nextInt();
//2) N개 숫자 입력
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-2. 보이는 학생
- 최댓값 M 를 갱신하는 방식으로 풀자
import java.util.Scanner;
/* 2-1. 보이는 학생
* [설명]
선생님이 N명의 학생을 일렬로 세웠습니다.
일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때,
맨 앞에 서 있는 선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요.
(앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)
* */
public class Main2 {
//솔루션 함수
public int solution(int n, int[] arr) {
int answer = 1;
int M = arr[0]; //첫 학생 무조건 초기화
for(int i =0; i<n; i++) {
if(arr[i] > M) {
answer+=1;
M = arr[i];
}
}
return answer;
}
//실행 메인
public static void main(String[] args) {
// TODO Auto-generated method stub
Main2 T = new Main2();
//입력
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.println(T.solution(n, arr));
}
}
2-3. 가위바위 보
- A를 기준으로 경우의 수를 나눠서 생각하자.
/* 2-3. 가위바위보
* 설명 : A, B 두 사람이 가위바위보 게임을 합니다.
총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다.
가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다.
두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요. */
public class Main3 {
//솔루션 함수
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) {
// TODO Auto-generated method stub
Main3 T = new Main3();
Scanner kb = new Scanner(System.in);
//입력
int n = kb.nextInt();
int[] arr1 = new int[n];
int[] arr2 = new int[n];
for(int i =0 ;i<n; i++) {
arr1[i] = kb.nextInt();
}
for(int i = 0; i<n; i++) {
arr2[i] = kb.nextInt();
}
//출력
for(char x: T.solution(n, arr1, arr2).toCharArray() ) {
System.out.println(x);
}
}
}
2-4. 피보나치 수열
(1) 배열 사용한 풀이
import java.util.Scanner;
/* 2-4. 피보나치 수열
* 1) 피보나키 수열을 출력한다. 피보나치 수열이란 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다.
2) 입력은 피보나치 수열의 총 항의 수 이다. 만약 7이 입력되면 1 1 2 3 5 8 13을 출력하면 된다.
* */
public class Main4 {
//솔루션 함수
public int[] solution (int n) {
int[] answer = new int[n];
//초기화 a1, a2 = 1
answer[0] = 1; answer[1] = 1;
for(int i = 2; i<n; i++) {
answer[i] = answer[i-2] + answer[i-1];
}
return answer;
}
//실행 메인
public static void main(String[] args) {
// TODO Auto-generated method stub
Main4 T = new Main4();
Scanner kb = new Scanner(System.in);
//입력
int n = kb.nextInt();
//출력
for(int x : T.solution(n) ) System.out.print(x + " ");
}
}
(2) 배열 없이 풀이
public class Main5 {
public void solution(int n) {
int a = 1, b =1, c;
System.out.print(a + " " + b + " ");
for(int i =2; i<n; i++) {
c = a+b;
System.out.print(c + " ");
//갱신되어야 수열 생성됨
a = b;
b = c;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Main5 T = new Main5();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
T.solution(n);
}
}
728x90
'알고리즘 이론 [개념] > [개념] 코테 알고리즘 공부 - 시즌 1' 카테고리의 다른 글
배열(Array) 섹션 - (3) (0) | 2023.03.01 |
---|---|
배열(Array) 섹션 - (2) (0) | 2023.02.28 |
String(문자열) 섹션 - (3) (0) | 2023.02.23 |
String(문자열) 섹션 - (2) (0) | 2023.02.22 |
String(문자열) 섹션 - (1) (0) | 2023.02.21 |