일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리눅스
- 문자열
- Kotlin
- Memoir
- 연습문제
- Java
- 월간코드챌린지
- map
- 개발자 회고록
- 스프링 빈
- 자바스크립트 코딩의 기술
- JavaScript
- 백준 javascript
- 리눅스마스터 3과목
- 코딩테스트
- toCharArray
- 백준 java
- Linux
- 고잉버스
- 카카오
- 스프링 컨테이너
- GoingBus
- java 백준 1차원 배열
- 리눅스마스터1급
- 명령어
- 자바
- 프로그래머스
- 리눅스마스터 1급 정리
- 반복문
- 코테
- Today
- Total
hoon's bLog
백준 Java & Javascript 1차원 배열 2562, 10810 본문
문제출처 : https://www.acmicpc.net/step/6
저번 포스팅에 이어서 1차원 배열!
아직까지 여전히 무난하지만, Java와 Javascript를 같이 풀다 보니,
조금 번잡하고 길어짐과 동시에, 퀄리티가 조금 떨어지는 듯함을 느꼈기 때문에,
포스팅 문제수를 줄여보기로 했다 ㅎㅎㅎ(절대 분량 뽑기 아님)
난이도는 ★~★.5!
총 2562, 10810 문제 가보자고~!!!
[2562] 최댓값
<문제>
<Java 풀이>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 입력받은 값을 담을 list
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 9; i++) {
// 입력받은 값을 list에 순서대로 저장
list.add(Integer.parseInt(br.readLine()));
}
// max값 초기화
int max = list.get(0);
for (int j = 1; j < list.size(); j++) {
if(list.get(j) > max) // 입력받은 list에 max값 보다 큰 값이 있으면 저장
max = list.get(j);
}
System.out.println(max);
System.out.println(list.indexOf(max) + 1); // max 값이 존재하는 list의 인덱스 + 1 = max의 순번
br.close();
}
}
<Javascript 풀이>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(n => parseInt(n));
let maxValue = input[0];
let maxNo = 0;
for (let i = 0; i < input.length; i++) {
if (maxValue < input[i]) {
maxValue = input[i];
maxNo = i;
}
}
console.log(maxValue + "\n" + (maxNo+1));
[10810] 공 넣기
<문제>
<Java 풀이>
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));
// StringTokenizer로 N과 M, " "(공백)으로 구분(default 구분자가 " "(공백))
StringTokenizer st = new StringTokenizer(br.readLine());
// N : 바구니 개수
int N = Integer.parseInt(st.nextToken());
// M : 공 넣는 방법의 수
int M = Integer.parseInt(st.nextToken());
// 공을 담을 바구니 배열
int[] basket = new int[N];
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine()); //startBasket, endBasket, ballNo
// startBasket : 공을 넣을 시작 바구니
// endBasket : 공을 넣을 끝 바구니
// ballNo : 넣을 공의 숫자
int startBasket = Integer.parseInt(st.nextToken());
int endBasket = Integer.parseInt(st.nextToken());
int ballNo = Integer.parseInt(st.nextToken());
// 순번을 인덱스로 맞춰주기 위해 -1, 끝 바구니까지 반복 설정
for(int j = startBasket - 1; j < endBasket; j++) {
basket[j] = ballNo;
}
}
for(int k = 0; k < basket.length; k++) {
// 해당 바구니의 공 번호 출력
bw.write(basket[k] + " ");
}
br.close();
bw.flush();
bw.close();
}
}
<Javascript 풀이>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const [n, m] = input[0].trim().split(' ').map(x => parseInt(x));
const ball = [];
for (let i=0; i < n; i++) {
ball.push(0);
}
for (let i=0; i < m; i++) {
const [st, ed, num] = input[i+1].trim().split(' ').map(x => parseInt(x));
for (let j = st - 1; j < ed; j++) {
ball[j] = num;
}
}
Java와 Javascript를 같이 풀어본 결과,
그냥 문법의 차이만 조금 있고, 문제의 로직은 비슷하다고 볼 수 있다.
단, Java로 풀이 시, 예제처럼 직접 입력을 받기 때문에, 입력에 따라 추가로 입력받는 로직을 구현하는 부분이 필요하고,
Javascript는 readFileSync안에 '파일'을 가공하여 상수로 잘 이용해야 한다.
추가로 Java로 풀이할 경우,
BufferedReader 사용 시, Garbage Collector에 의하여 사용되지 않는 자원이 정리되기 전에,
연속/반복적으로 BufferedReader가 close 되지 않고 사용되면 정상적으로 reading이 되지 않는 경우가 발생할 수 있다.
BufferedWriter의 close()를 명시한 이유는, 자원 관리의 중요성이 그 이유이다.
Java에서는 자원관리를 쉽게 해주는 Garbage Collector가 있기 때문에 큰 문제가 되지 않지만,
자원관리를 프로그래머가 직접 해야 하는 경우가 많기 때문에, 자원관리를 해주는 습관을 들이는 것이 좋다.
Java 자세한 사항은 백준 문제 풀이 시 주의 해야할 점 포스팅을 참고하면 되겠다.
만약 여기서 막히고 어렵다면?!!?!?
아래 링크에서 배열에 대해서 다시 알아보고 오시면 좋을 듯!
언제나 새로운 정보 공유와 잘못된 정보
지적/태클은 환영입니다!
끝.
Reference
Java : https://psip31.tistory.com/11
Javascript : https://psip31.tistory.com/129
'코딩테스트 > 백준' 카테고리의 다른 글
백준 Java 1차원 배열 10811 (2) | 2023.08.09 |
---|---|
백준 Java & Javascript 1차원 배열 10813, 5597, 3052 (0) | 2023.08.02 |
백준 Java & Javascript 1차원 배열 10807, 10871, 10818 (0) | 2023.07.19 |
백준 Java 반복문 2739, 10950, 8393, 25304, 25314, 15552, 11021, 11022, 2438, 2439, 10952, 10951 (2) | 2023.04.10 |
백준 Java 백준 문제 풀이 시 주의 해야할 점 (1) | 2023.03.10 |