[BAEKJOON] 배열 2562번 - 최댓값

밍챠코·2024년 4월 2일
0

BAEKJOON

목록 보기
34/38

📝[2562]

[Java]

1. Scanner 이용 (배열o)

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int[] arr = new int[9];
        int max = arr[0]; // 최댓값을 담을 변수
        int index = 0; // 최댓값의 위치를 담는 변수  
        
        for(int i=0; i < arr.length; i++){
            arr[i] = sc.nextInt();
            if(arr[i] > max){
                max = arr[i];
                index = i+1;
            }
        }
        System.out.println(max);
        System.out.println(index);
        
        sc.close();
    }
}

💡 Java에서 int형 배열은 선언되면 기본적으로 0으로 초기화됨

2. BufferedReader 이용 (배열x)

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

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int max = 0; // 최댓값을 담을 변수
        int index = 0; // 최댓값의 위치를 담는 변수  
        
        for(int i=0; i < 9; i++){
            int value = Integer.parseInt(br.readLine());
            if(value > max){
                max = value;
                index = i+1;
            }
        }
        System.out.println(max);
        System.out.println(index);
        
        br.close();
    }
}

3. BufferedReader/StringBuilder 이용 (배열o)

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

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        int[] arr = new int[9];
        int max = arr[0]; // 최댓값을 담을 변수
        int index = 0; // 최댓값의 위치를 담는 변수  
        
        for(int i=0; i < arr.length; i++){
            arr[i] = Integer.parseInt(br.readLine());
            if(arr[i] > max){
                max = arr[i];
                index = i+1;
            }
        }
        sb.append(max).append("\n").append(index);
        System.out.println(sb);
        
        br.close();
    }
}

4. BufferedReader/BufferedWriter 이용 (배열o)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int[] arr = new int[9];
        int max = arr[0]; // 최댓값을 담을 변수
        int index = 0; // 최댓값의 위치를 담는 변수  
        
        for(int i = 0 ; i < 9 ; i++) {
			arr[i] = Integer.parseInt(br.readLine());
            if(arr[i] > max){
                max = arr[i];
                index = i+1;
            }
		}
        br.close();
        bw.write(max + "\n" + index);
        bw.flush();
        bw.close();
    }
}

[Javascript]

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
let max = input[0]; // 초기 최댓값을 배열의 첫번째 요소로 설정
let index = 0;

for(let i=1; i < 9; i++){ // 배열의 두번째 요소부터 아홉번째 요소까지 검사
    if(input[i] > max){
        max = input[i]; // 더 큰 값이 나오면 최댓값 업데이트
        index = i; // 해당 최댓값의 index 기록
    }
}
console.log(max);
console.log(index+1); // index는 N-1번째이므로 콘솔에 출력할 때 +1 해줘야 함



const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
let max = 0;
let index = 0;

for(let i=0; i < 9; i++){ // 배열의 첫번째 요소부터 마지막 요소까지 검사
    if(input[i] > max){
        max = input[i];
        index = i; // index = i+1;
    }
}
console.log(max);
console.log(index+1); // console.log(index);



const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number);
let max = Math.max(...input); 

console.log(max);
console.log(input.indexOf(max) + 1); 

💡 Math.max() → 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환하는 함수

console.log(Math.max(1, 3, 2));
> 출력 결과 : 3

const array1 = [1, 3, 2];
console.log(Math.max(...array1));
> 출력 결과 : 3

💡 스프레드 연산자 ( ... )
→ 배열, 문자열, 객체 등 반복 가능한 객체를 개별 요소로 분리 할 수 있음

// Array
let arr1 = [1, 2, 3, 4, 5]; 
let arr2 = [...arr1, 6, 7, 8, 9]; 

console.log(arr2); // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

// String
let str1 = 'paper block'; 
let str2 = [...str1]; 
console.log(str2); // [ "p", "a", "p", "e", "r", " ", "b", "l", "o", "c", "k" ]

💡 indexOf() → 배열에서 요소의 인덱스를 반환하는 함수
Array.indexOf(searchElement[, fromIndex])

  • searchElement : 배열에서 찾을 요소, 대소문자를 구분함
  • fromIndex : 검색을 시작할 인덱스 (생략 시 default값은 0임)
  • 배열에서 인수로 전달된 요소를 찾아 첫 번째로 검색된 요소의 인덱스를 반환
  • 인수로 전달된 요소를 찾을 수 없다면 -1을 반환

[Python]

arr = []

for i in range(9) :
    arr.append(int(input()))
    
print(max(arr))
print(arr.index(max(arr)) + 1)

💡 index() → List에서 지정된 요소의 인덱스를 반환하는 메서드
list.index(element[, start, end])

  • element : 검색할 요소
  • start : 시작 위치
  • end : 끝
  • 처음 검색된 위치를 반환
  • 요소를 찾을 수 없으면 ValueError 발생

💡 append() → 리스트의 끝에 새로운 요소를 추가하는 함수
list.append(x)

arr = [int(input()) for _ in range(9)]

print(max(arr))
print(arr.index(max(arr)) + 1)

💡 List comprehension (리스트 컴프리헨션)
→ 리스트를 생성하는 짧고 간결한 방법
반복문, 조건문을 사용하여 리스트를 초기화하는 방법

[표현식 for 항목 in iterable]

  • 표현식 : 리스트에 포함될 항목을 나타내는 표현식
  • 항목 : iterable에서 가져온 요소를 의미
    반복을 수행하되, 변수 값을 굳이 사용할 필요가 없을 때 언더스코어(_) 사용
  • iterable : 리스트, 튜플, 집합, 문자열 등과 같이 반복 가능한 객체
even_numbers = [x for x in range(10) if x % 2 == 0]
// 0부터 9까지의 숫자를 반복하면서, 각 숫자가 짝수인지를 검사하여 짝수인 경우에만 리스트에 포함시킴
  • 컴프리헨션(Comprehension)
    : 파이썬의 자료구조(list, dictionary, set)에 데이터를 좀 더 쉽고 간결하게 담기 위한 문법
    여기서 '쉽고 간결하게' 데이터를 담는 방법이란 반복문과 조건문을 결합하여 하나의 구문으로 만들어 담는 것을 의미

🔎 해당 코드가 불가능한 이유?

arr = list(map(int, input().split('\n')))
  • 여러 줄에 걸쳐서 입력받을 시 input() 함수를 통해 한 줄씩 입력을 받아야 함
  • 개행 문자('\n')을 기준으로 입력을 나누면 여러 줄에 걸쳐 입력을 받는 것이 아니라 한 줄에 모든 입력이 들어오게 됨

0개의 댓글