JavaScript

[JS] 코딩테스트 027~029 - 객체 만들기(중요)****, For문의 응용

Irene1988 2025. 2. 17. 08:17
문제27 : 객체 만들기

첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고,
두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다.

두 개를 합쳐 학생의 이름이 key이고 value가 수학 점수인 객체를 출력해주세요.
/*
입력
Yujin Hyewon
70 100

출력
{'Yujin': 70, 'Hyewon': 100}

*/

// const keys = ["지디","지팍"];
// const values = ["90","10"];

const keys = prompt('이름을 입력하세요!').split(" ");
const values = prompt('점수를 입력하세요!').split(" ");

let obj = {};

for(let i=0; i<keys.length;i++){
    obj[keys[i]] = values[i];
}

console.log(obj); // { '지디': '90', '지팍': '10' }

 

* 객체를 만드는 방법을 꼭 짚고 넘어가야 한다.

 

 

        for(let i=0; i<keys.length;i++){
            obj[key[i]] = values[i];
        }

obj[keys[i]] = values[i];: keys 배열의 i번째 요소를 obj 객체의 키로 사용하고, values 배열의 i번째 요소를 해당 키의 값으로 할당합니다.

 

결과적으로 obj 객체는 입력받은 이름과 점수를 키-값 쌍으로 가지게 된다.


문제28 : 2-gram
2-gram이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. 
예를 들어 'Javascript'2-gram으로
반복해 본다면 다음과 같은 결과가 나옵니다.

입력으로 문자열이 주어지면 2-gram으로
출력하는 프로그램을 작성해 주세요.
/**
 * 입력
Javascript

출력
J a
a v
v a
a s
s c
c r
r i
i p
p t
 * 
 * 
 */

const word = "JavaScript";

for(let i=0; i < word.length-1; i++) {
    console.log(word[i], word[i+1]);
}

문제29 : 대문자만 지나가세요

진구는 영어 학원 아르바이트를 하고 있습니다.
반 아이들은 알파벳을 공부하는 학생들인데 오늘은 대문자 쓰기 시험을 봤습니다.

알파벳 하나만을 입력하고 그 알파벳이
대문자이면 YES를 아니면 NO를 출력하는 프로그램을 만들어 주세요.
const word = prompt();

if(word === word.toUpperCase()){
    console.log("YES");
} else {
    console.log("NO");
}

-> 위에 답은 동영상 강의에서 제시한 답

코드를 좀 더 보강하면, 입력값이 숫자일 경우 YES로 출력된다. 이를 보완한 코드를 작성해 보았다.

 

const txtInput = prompt('알파벳 입력');

//대문자 소문자에 관련된 메서드 toUpperCase(), toLowerCase()
if(txtInput && /^[a-zA-Z]+$/.test(txtInput) && txtInput === txtInput.toUpperCase()){
    console.log("YES");
} else {
    console.log("NO");
}

 

✅ 코드 설명

  1. word &&
    • 사용자가 입력을 안 했을 경우(null이나 ""), 오류 방지
  2. /^[a-zA-Z]+$/
    • 정규표현식(Regex) 사용
    • 오직 알파벳(az, AZ)만 포함된 경우만 검사
    • 숫자나 특수문자가 포함되면 false 반환
  3. word === word.toUpperCase()
    • 입력값이 모두 대문자인 경우 "YES" 출력

🔹 실행 예시

입력값 출력값
HELLO YES
Hello NO
12345 NO
HELLO123 NO
!@#ABC NO

이제 숫자나 특수문자가 포함되면 "NO"가 나오도록 보완! 😊

 

😊 정규식(Regex)을 사용해서 입력값이 알파벳(az, AZ)만 포함되는지 검사

🔍 정규식 /^[a-zA-Z]+$/ 설명

  1. ^ → 문자열의 시작을 의미
  2. [a-zA-Z] → **소문자(a-z) 또는 대문자(A-Z)**만 허용
  3. + → 최소 한 글자 이상 있어야 함
  4. $ → 문자열의 을 의미

📌 즉, 알파벳으로만 이루어진 문자열인지 검사하는 정규식!
숫자나 특수문자가 포함되면 false로 출력됨