백준 알고리즘 / 5.step1(3)

dudgus5766·2021년 7월 29일
2

알고리즘

목록 보기
9/15
post-thumbnail

9713번

문제 : https://www.acmicpc.net/problem/9713

풀이

/*
문제 : Given an odd integer N, calculate the sum of all the odd integers between 1 and N inclusive.
입력 : First line of the input contains T, the number of test cases. Each test case contains a single integer N. N is between 1 and 100.
출력 : For each test case output the value 1+3+….+N.
*/

// 답안

// let fs = require('fs');
// let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n').map(x => +x);
let inputs = "10\n1\n3\n5\n7\n9";
let input = inputs.trim().split("\n").map(x => +x);

for(let i = 1; i <= input.length-1; i++){
    let num = input[i]
    let result = 0;

    for(let j = 1; j <= num; j++){
        if(j%2 !== 0){

        result += j

        }
    }
    console.log(result);
}

💡 새로 알게된 사실

처음 9713번 문제를 풀 때, result를 for문 바깥에 두었다.

let inputs = "10\n1\n3\n5\n7\n9";
let input = inputs.trim().split("\n").map(x => +x);
let result = 0; //이런식으로!
for(let i = 1; i <= input.length-1; i++){
    let num = input[i]
    let result = 0;

이런식으로 코드가 진행되면 for문이 돌아가면서 result값이 '0'으로 '초기화'되지 않고 for문의 동작에 따라서 값이 누적된다. ex) 1,5(1+(1+3))...
그러나 풀이처럼 for문 안으로 들어오는 경우 매 동작마다 result값이 '0'으로 시작하게 된다.
도움을 주신 철진님, 현재님 너무 감사합니다ㅜㅜ

10093번

문제 : https://www.acmicpc.net/problem/10093

풀이

/*
문제 : 두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오.
입력 : 두 정수 A와 B가 주어진다.
출력 : 첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다.
둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다.
*/


// let fs = require('fs');
// let input = fs.readFileSync('/dev/stdin').toString().split(' ').map(x => +x);

let inputs = '8 14';
let input = inputs.trim().split(' ').map(x => +x);

let A = input[0]; // 8
let B = input[1]; // 14
let arr = [];
// 빈 배열 생성

if(A < B){
    console.log(B - A -1);
    for(let i = A + 1; i < B; i++){
        arr.push(i);
        // 배열에 하나씩 입력
    }
}else if(B < A){
    console.log(A - B -1);
    for(let i = B + 1; i < A; i++){
        arr.push(i);
    }
}else{
    console.log(0);
}

console.log(arr.join(' '));
// 배열을 ,로 나눠서 숫자로 나타냄

10817번

문제 : https://www.acmicpc.net/problem/10817

풀이

/*
문제 : 세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 
입력 : 첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)
출력 : 두 번째로 큰 정수를 출력한다.
*/

// 답안

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split(' ').map(x => +x);
// let inputs = "40 20 10";
// let input = inputs.trim().split(" ").map(x => +x);

console.log(input.sort((a,b)=>a-b)[1]);
// sort 함수를 통해 오름차순으로 값을 바꾼 뒤 인덱스 1번 값을 출력.

마치며

저번주에 어려워 풀지 못했던 문제를 풀고 나니 너무 후련하고 뿌듯했다 🥳

profile
RN App Developer

0개의 댓글