일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트
- 리눅스마스터1급
- 반복문
- Memoir
- JavaScript
- 카카오
- Linux
- 연습문제
- Java
- 자바
- 자바스크립트 코딩의 기술
- 백준 javascript
- Kotlin
- 리눅스마스터 1급 정리
- 월간코드챌린지
- 백준 java
- toCharArray
- 리눅스마스터 3과목
- java 백준 1차원 배열
- 스프링 빈
- 고잉버스
- 리눅스
- GoingBus
- 코테
- 프로그래머스
- map
- 스프링 컨테이너
- 명령어
- 개발자 회고록
- 문자열
- Today
- Total
hoon DevLog
백준 Java & Javascript 1차원 배열 10807, 10871, 10818 본문
문제출처 : https://www.acmicpc.net/step/6
1차원 배열 단계
배열을 활용하여 서로 다른 값의 개수를 찾는 문제
www.acmicpc.net
이번 포스팅은 1차원 배열!
아는 동생들과 스터디를 하면서 문제를 풂과 동시에 포스팅을 하면 좋겠다라는 생각이 들었다.
주 3 문제씩 풀면서 본인이 푼 방식을 설명하고 피드백을 해주는 형태인데 꽤나 도움이 되는 것 같다!
난이도는 ★~★.5!
총 10807, 10871, 10818 3문제 Get it!!!
[10807] 개수 세기
<문제>
<Java 풀이>
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 IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(br.readLine());
int cnt = 0;
for(int i=0; i < arr.length; i++){
arr[i] = Integer.parseInt(st.nextToken());
if(arr[i] == num){
cnt++;
}
}
System.out.println(cnt);
br.close();
}
}
<Javascript 풀이>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let arr = input[1].split(' ');
var cnt = 0;
for(var i=0; i < +input[0]; i++){
// 셋째줄에 입력된 수가 있으면 cnt +1
if(input[2] == +arr[i]) cnt++;
}
console.log(cnt);
[10807] X보다 작은 수
<문제>
<Java 풀이>
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 IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int X = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) {
int value = Integer.parseInt(st.nextToken());
if (value < X)
sb.append(value).append(' ');
}
System.out.println(sb);
}
}
<Javascript 풀이>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let num = input[0].split(' '); // 첫째줄
let arr = input[1].split(' '); // 둘째줄
let str = ''; // 결과 출력할 변수
for(var i=0; i < +num[0]; i++){
// 둘째줄의 수가 첫째줄에 주어진 X보다 작은 수를 공백과 함께 str에 저장
if(+num[1] > +arr[i])
str += arr[i] + ' ';
}
console.log(str.trim());
[10807] 최소, 최대
<문제>
<Java 풀이>
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 IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int max = -1000001;
int min = 1000001;
while(st.hasMoreTokens()) {
int val = Integer.parseInt(st.nextToken());
if(val>max) max = val;
if(val<min) min = val;
}
System.out.println(min + " " + max);
}
}
<Javascript 풀이>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
for (let i = 0; i < N; i++) {
arr[i] = Number(arr[i]);
}
// max, min 초기화
let max = arr[0];
let min = arr[0];
for (let i = 0; i < N; i++) {
// 큰 값은 max, 작은 값은 min에 저장
if (max < arr[i]) max = arr[i];
if (min > arr[i]) min = arr[i];
}
// 백틱을 이용한 결과 출력
console.log(`${min} ${max}`);
<다른 풀이(제출 시 시간은 좀 걸림..)>
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
// 주어진 정수 N개
let count = Number(input[0]);
// 배열로 받은 값을 map 메서드를 이용해 Number로 치환
let numbers = input[1].split(' ').map(x=> Number(x));
/*
* a, b 두 요소를 전달하고, a - b로 크기를 비교해서 양수인지, 음수인지, 0인지 판별
* a가 b보다 크면 양수로 return, 같으면 0, a가 b보다 작으면 음수로 return.
* a가 작으면 a를 앞으로 보내고, 0을 반환하면 그대로 있고, a가 크면, b가 작은 거니까 b를 앞으로 보내서 최종적으로 오름차순 됨.(내림차순은 그 반대)
*/
numbers.sort((a, b) => a - b);
/*
* sort 메서드로 내림차순 정렬을 하면 numbers 배열에서 index 0번째가 최솟값이 되고
* numbers 배열에서 첫 번째 줄에 주어진 정수 N - 1(마지막 인덱스) 은 최댓값이 됨!
*/
console.log(`${numbers[0]} ${numbers[count - 1]}`);
역시 크게 따로 설명할 필요 없을만큼 어려운 부분은 없다.
Java로 풀이할 경우 백준 문제 풀이 시 주의 해야할 점 포스팅을 참고하면 되겠다.
Javascript는 입력을 따로 받지 않아서 푸는데 좀더 수월 했던것 같다.
만약 여기서 막히고 어렵다면?!!?!?
아래 링크에서 배열에 대해서 다시 알아보고 오시면 좋을 듯!
Java : https://psip31.tistory.com/11
[Java] 배열(Array)
안녕하세요! 이번 포스팅에서는 "배열"! 배열에 대해서 한번 알아보도록 하겠습니다. 배열(Array)이란? 배열(Array) : 같은 타입의 여러 변수를 연속된 메모리 공간으로 이루어진 자료구조 여기서
psip31.tistory.com
Javascript : https://psip31.tistory.com/129
[Javascript] 배열(Array)
배열(array) 이름과 인덱스로 참조되는 정렬된 값의 집합 배열을 구성하는 각각의 값을 배열 요소(element), 배열에서의 위치를 가리키는 숫자를 인덱스(index) 배열 요소의 타입이 고정되어 있지 않
psip31.tistory.com
'코딩테스트 > 백준' 카테고리의 다른 글
백준 Java & Javascript 1차원 배열 10813, 5597, 3052 (0) | 2023.08.02 |
---|---|
백준 Java & Javascript 1차원 배열 2562, 10810 (0) | 2023.07.26 |
백준 Java 반복문 2739, 10950, 8393, 25304, 25314, 15552, 11021, 11022, 2438, 2439, 10952, 10951 (2) | 2023.04.10 |
백준 Java 백준 문제 풀이 시 주의 해야할 점 (1) | 2023.03.10 |
백준 Java 조건문 1330, 9498, 2753, 14681, 2884, 2525, 2480 (2) | 2023.03.08 |