1. 문제

대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자로 모두 통일하여 문자열을 출력하는 프로그램을 작성하세요.

입력예제 | ItisTimeToStudy

출력예제 | ITISTIMETOSTUDY

 

 

2. 문제풀이

answer를 빈문자열로 비워놓고 인수로 받은 문자열을 하나씩 돌면서 대문자로 바꿔서 answer 문자열에 하나씩 누적해준다.

function solution(str) {
	let answer = "";
    for(let x of str){
    	answer += x.toUpperCase();
    }
    return answer;
}

console.log(solution("ItisTimeToStudy"));

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 가장 긴 문자열  (0) 2021.04.19
JS알고리즘 | 대소문자 변환  (0) 2021.04.18
JS알고리즘 | 대문자 찾기  (0) 2021.04.18
JS알고리즘 | 문자 찾기  (0) 2021.04.17
JS알고리즘 | A를 #으로  (0) 2021.04.17

1. 문제

한 개의 문자열을 입력받아 해당 문자열에 알파벳 대문자가 몇 개 있는지 알아내는 프로그램을 작성하세요.

입력예제 | KoreaTimeGood

출력예제 | 3

 

 

2. 문제풀이

for of반복문으로 문자열 탐색해서 대문자가 나올경우에만 answer값 누적시켜서 출력하기

function solution(str) {
	let answer = 0;
    for(let x of str) {
    	if(x === x.toUpperCase()) answer++;
    }
    return answer;
}

console.log(solution("KoreaTimeGood");

 

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 대소문자 변환  (0) 2021.04.18
JS알고리즘 | 대문자로 통일  (0) 2021.04.18
JS알고리즘 | 문자 찾기  (0) 2021.04.17
JS알고리즘 | A를 #으로  (0) 2021.04.17
JS알고리즘 | 일곱난쟁이  (0) 2021.04.16

1. 문제

한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇개 존재하는지 알아내는 프로그램을 작성하세요. (문자열의 길이는 100을 넘지 않습니다.)

입력설명 | 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.

출력설명 | 첫 줄에 해당 문자의 개수를 출력한다.

입력예제 | COMPUTERPROGRAMMING / R

 

 

2. 문제 풀이 (1)

문자열 안에 특정 단어가 몇개 존재하는지 알아내야한다.

반복문으로 문자열 돌면서 해당 단어 있으면 answer값 누적 증가하는 방법을 써주자.

1. answer에 누적counting하여 개수를 출력해야하므로 -> let answer = 0 이라고 써준다.

2. for of 반복문으로 문자열의 문자하나씩 돌면서 탐색 -> 조건문으로 x가 인수와 같으면 answer를 증감시킨다.

function solution(word) {
	let answer = 0;
    for (let x of str){
    	if(x === word) answer++;
    }
    return answer;
}

let str = "COMPUTERPROGRAMMING";
console.log(solution('R');

 

 

2. 문제 풀이 (2)

입력된 예제가 소문자 였지만 모두 대문자인 문자열에서 찾아야한다면?

문자열을 대문자로 변경하여 반환하는 toUpperCase 메서드를 사용한다. 

function solution(word) {
	let answer = 0;
    for (let x of str){
    	if(x === word.toUpperCase()) answer++;
    }
    return answer;
}

let str = "COMPUTERPROGRAMMING";
console.log(solution('r');

 

2. 문제 풀이 (3) - 적용 문제

내장함수를 사용 split (문자열을 배열화 시켜서 반환) 

R을 기점(R이 구분자) 으로 분리하여 배열화 시켜서 반환

 

answer 에 바로 처리를 하도록 한다. 

function solution(s, t){
	let answer = s.split(t).length;
    return answer-1;
 }
 let str = "COMPUTERPROGRAMMING";
 console.log(solution(str, 'R'));

 

R을 구분자로 나누고 배열의 요소 개수를 구해서 -1해줘서 찾을수도 있다.

 

 

3. 사용한 개념

String.toUpperCase() 

// 예시
const str = "Hello World";

str.toUpperCase(); // "HELLO WORLD"

 

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 대문자로 통일  (0) 2021.04.18
JS알고리즘 | 대문자 찾기  (0) 2021.04.18
JS알고리즘 | A를 #으로  (0) 2021.04.17
JS알고리즘 | 일곱난쟁이  (0) 2021.04.16
JS알고리즘 | 10부제  (0) 2021.04.14

1. 문제

대문자로 이루어진 영어단어가 입력되면 단어에 포함된 ‘A'를 모두 ’#‘으로 바꾸어 출력하는 프로그램을 작성하세요.

입력 예제 | BANANA

출력 예제 | B#N#N#

 

 

 

간단한 문자열 탐색 문제

 

 

2. 문제풀이 (1)

1. answer는 문자열로 출력된다. 

2. for문으로 문자열 탐색 가능하다 -> for of문 사용 -> if문으로 변수 x가 대문자 A인지 하나씩 확인한다. 

 function solution(word) {
            let answer = ""; // answer로 출력될 값은 문자열이니까
            for(let x of word){
                if(x === 'A') answer += '#';
                else answer += x;
            }
            return answer;
        }

        
        console.log(solution("BANANA"));

 

변수로 작성한 answer는 빈 문자열이다.

for 반복문 안에 조건문을 사용해준다. 

인수로 받은 문자열의 문자 하나하나씩 조건문으로 확인하면서 (for 문자 of 문자열) 문자열을 채워가는 방식

x === 'A'가 true이면 answer = answer + '#' 출력 / 누적 / x === 'A'가 false이면 answer = answer + x 

 

*큰따옴표는 문자열일결우, 작은 따옴표는 문자 하나 쓰일 때 사용

 

 

 

2. 문제 풀이 (2)

String.replace 메서드 / 정규표현식 사용

A라는 대문자를 찾아라 / 바꾸는 문자는 #으로 바꿔라 -> (/A/, '#')

문자열은 얉은 복사 되지않는다. 배열은 주소 참조되는데 문자열은 값이 복사되는게 아니라 값이 바뀌는 것이다.

function solution(word){
	let answer = word; //얉은 복사 but,문자열은 주소 참조되는게 아니라 값이 복사되어 바뀌어버린다.
	answer = answer.replace(/A/g, '#'); 
	// 정규표현식 사용 word라는 string에서 A를 찾아서 string #로 바꿔라
	// 그냥 대문자 A만 적으면 한번만 찾는다. 전역에서 모두 찾아야하니까 global 의미의 g를 함께 써준다.
	return answer;
}

console.log(solution("BANANA"));

 

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 대문자 찾기  (0) 2021.04.18
JS알고리즘 | 문자 찾기  (0) 2021.04.17
JS알고리즘 | 일곱난쟁이  (0) 2021.04.16
JS알고리즘 | 10부제  (0) 2021.04.14
JS알고리즘 | 홀수  (0) 2021.04.13

1. 문제

일과를 마치고 돌아온 난쟁이가 일곱명이 아니라 아홉명 이었다. 백설공부는 일곱 난쟁이의 키의 합이 100이 됨을 알고있었다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.

입력예제 | 20 7 23 19 10 15 25 8 13

 

 

2. 내가 푼 방법

9개 다 더한 총합 - 100 = n

2개 더한게 n 이 나오면 그 두개를 빼버리고 출력한다.

두개씩 더해서 맞는지 안맞는지 비교를 해줘야하는데, 이중 for문을 돌면서 전부 다 해봐야한다.

 

 

3. 문제풀이

1. 9개의 총합을 구하고 가짜 난쟁이 2개를 더한 값을 빼서 100이 맞으면

sum - (arr[i] + arr[j]) === 100

2. splice 메소드를 사용하여 2개 값 제거해버리고 출력한다. 

function solution(arr) {
            let answer = arr; // 얇은 복사 : 메모리에 있는 같은 배열을 가리키고 있는 것(주소만복사)
            let sum = arr.reduce((a,b)=> a+b,0);
            // 0번째 인덱스부터 9개니까 8번째 인덱스 까지 돌거야. i는 0번째 인덱스부터 시작
            for(let i=0; i<8; i++){
                // j는 i의 뒤에꺼라서 +1해준다. j는 1번째 인덱스 부터 시작
                for(let j=i+1; j<9; j++){
                    if((sum-(arr[i]+arr[j])) === 100){
                        arr.splice(j, 1); // 앞에꺼부터 지우면 인덱스가 바뀌어버려서 뒤에서 부터 지운다
                        arr.splice(i, 1);
                
                    }
                }
            }
            return answer;
        }

        let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
        console.log(solution(arr));

 

 

4. 사용한 개념

Array.reduce 메소드 (배열의 누적값, 총합 구하기)

reduce 메소드는 자신을 호출한 배열의 모든 요소를 돌면서 하나의 결과값을 구해야하는 경우 사용한다.

// 구문 정리
array.reduce(function(누적값, 현재값, 인덱스, 배열){ return 누적값 + 현재값 }, 0);
// 화살표 함수 사용
array.reduce((누적값, 현재값, 인덱스, 배열) => return 결과, 초기값);

 

 

Array.splice 메소드 (배열 내 특정 인덱스 제거)

원본 배열의 중간에 요소를 추가하거나 중간에 있는 요소를 제거하는 경우 사용한다.

splice메소드는 3개의 매개변수가 있으며 원본 배열을 직접 변경한다.

// 구문 정리
배열.splice(인덱스, 1) // 인덱스에 있는 1개 요소 제거한다




const arr = [1, 2, 3, 4];

const result = arr.splice(1, 2, 20, 30);
// 원본 배열의 인덱스 1부터 2개의 요소를 제거하고 그 자리에 새로운 요소 20, 30을 삽입한다. 

 

 

이중 for문 예제를 더 풀고 공부를 해야겠다.

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 문자 찾기  (0) 2021.04.17
JS알고리즘 | A를 #으로  (0) 2021.04.17
JS알고리즘 | 10부제  (0) 2021.04.14
JS알고리즘 | 홀수  (0) 2021.04.13
JS알고리즘 | 최솟값 구하기  (0) 2021.04.12

1. 문제

서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 것이다. 예를 들어, 자동차 번호의 일의 자리 숫자가 7이면 7일, 17일, 27일에 운행하지 못한다. 또한, 자동차 번호의 일의 자리 숫자가 0이면 10일, 20일, 30일에 운행하지 못한다. 여러분들은 일일 경찰관이 되어 10부제를 위반하는 자동차의 대수를 세는 봉사활동을 하려고 한다. 날짜의 일의 자리 숫자가 주어지고 7대의 자동차 번호의 끝 두 자리 수가 주어졌을 때 위반하는 자동차의 대수를 출력하는 프로그램을 작성하세요.

 

입력설명 | 첫 줄에는 날짜의 일의 자리 숫자가 주어지고 두 번째 줄에는 7대의 자동차 번호의 끝 두 자리 숫자가 주어진다.

출력설명 | 주어진 날짜와 자동차의 일의 자리 숫자를 보고 10부제를 위반하는 차량의 대수를 출력합니다.

입력예제 | 3 / 25 23 11 47 53 17 33

 

 

2. 문제 풀이 (1)

1. 끝자리가 n인 애들을 뽑아서 배열로 만든다.

2. 배열의 length를 출력한다.

 function solution(n, arr){
 	let newArr = [];
    for(let item of arr){
    	if(item % 10 === n) {
        	newArr.push(item);
        }
    }
    return newArr.length;
}

let arr = [25, 23, 11, 47, 53, 17, 33];
console.log(solution(3, arr));

*어떤 숫자이든지  10으로 나누면 나머지가 마지막 자리 숫자(일의 자리 숫자)가 된다.

 

 

2. 문제 풀이 (2)

n이 같으면 카운팅(증가시켜야함) 해야되니까 answer = 0

for문 돌면서 n과 같은지 봐야하니까 for of 문을 사용해준다.

 function solution(n, arr){
 	let answer = 0; // 위반하는 차의 수 출력해야해서 
    for(let item of arr){
    	if(item % 10 === n) answer++; // 위반하는 차량이면 한대씩 추가가 되는 방식
    }
    return answer;
}

let arr = [25, 23, 11, 47, 53, 17, 33];
console.log(solution(3, arr));

 

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | A를 #으로  (0) 2021.04.17
JS알고리즘 | 일곱난쟁이  (0) 2021.04.16
JS알고리즘 | 홀수  (0) 2021.04.13
JS알고리즘 | 최솟값 구하기  (0) 2021.04.12
JS알고리즘 | 1부터 N까지의 합  (0) 2021.04.11

7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최소값을 찾는 프로그램을 작성하세요.

입력예제 | 12 77 38 41 53 92 85

출력예제 | 256, 41


[내가 풀었던 방법]

1. 홀수를 찾아서 배열로 만든다.

2. 홀수로 구성된 배열 속에서 총 합을 구한다. (forEach 메소드)

3. 홀수로 구성된 배열 속에서 최소값 찾는다.(Math.min 메소드)

4. 새로운 배열을 만들어 값 2개를 넣어서 출력한다. (Array.push 메소드)

 

function solution(arr){
	let oddNumber = []; // 홀수를 찾아서 값 저장
    let answer = []; // 결과를 보여주는 배열
    let sum = 0; // 홀수로 구성된 배열 요소들의 총합 구하기
    for(let item of arr){
    	if(item % 2 !== 0) oddNumber.push(item);
        }
    let min = Math.min(...oddNumber);
    oddNumber.forEach((item)=>{
    	sum += item;
    })
    
    answer.push(sum);
    answer.push(min);
    
    return answer;
}

let arr = [12, 77, 38, 41, 53, 92, 85]
console.log(solution(arr));
    

 

 

for of문 : 배열의 값을 

 

[다른 풀이방법]

function solution(arr){
	let answer=[];
    let sum=0; min=Number.MAX_SAFE_INTEGER;
    for(let x of arr){
    	if(x%2===1){
        	sum+=x;
            if(x<min) min=x;
        }
    }
    answer.push(sum);
    answer.push(min);
    return answer;
    }

arr =[12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));

 

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 일곱난쟁이  (0) 2021.04.16
JS알고리즘 | 10부제  (0) 2021.04.14
JS알고리즘 | 최솟값 구하기  (0) 2021.04.12
JS알고리즘 | 1부터 N까지의 합  (0) 2021.04.11
JS알고리즘 | 연필 개수  (0) 2021.04.11

7개 수가 주어지면 그 숫자 중 가장 작은 수를 출력하는 프로그램을 작성하세요.

입력설명 | 첫 번째 줄에 7개의 수가 주어진다.

출력설명 | 첫 번째 줄에 가장 작은 값을 출력한다.

입력 예제 | 5 3 7 11 2 15 17

출력 예제 | 2


 

[풀이 1]

Math.min.apply()

1. 표준내장객체인 Math 메소드를 사용한다. Math.min() : 전달받은 인수 중에서 가장 작은 수를 반환한다.  

2. 배열을 인수로 전달 받아 배열의 요소 중에서 최소값을 구한다 -> apply 메소드를 사용한다. 

function minValue(arr){
	let answer = Math.min.apply(null, arr);
    retrun answer;
}

let arr = [5, 3, 7, 11, 2, 15, 17]
console.log(minValue(arr));

 

 

[풀이 2]

Math.min()

function minValue(arr){
	let answer=Math.min(...arr);
    retrun answer;
}

let arr = [5, 3, 7, 11, 2, 15, 17]
console.log(minValue(arr));

... : 전개연산자spread operator - 배열을 펼쳐준다.

arr[0], arr[1], arr[2] 이런식으로 계속 펼쳐줘서 인자로 들어갈수있게 펼쳐준다.

 

 

[풀이 3]

Number객체 Number.MAX_SAFE_INTEGER

function minValue(arr){
	let answer, min=Number.MAX_SAFE_INTEGER;
    for(let i=0; i<arr.length; i++) {
    	if(arr[i]<min) min=arr[i];
    anser = min;
    retrun answer;
}

let arr = [5, 3, 7, 11, 2, 15, 17]
console.log(minValue(arr));

 

 

 

 

 

[사용한 개념]

Math 메소드는 수학적인 상수와 함수를 위한 property와 속성을 제공한다. 

 

Math.max()

전달받은 인수 중에서 가장 큰수를 반환

배열을 인수로 전달받아 배열의 요소 중에서 최대값을 구하려면 Function.prototype.apply 메소드 또는 스프레드 문법을 사용해야 한다.

Math.max.apply(null, [1, 2, 3]); // 3

 

Math.min()

전달받은 인수 중에서 가장 작은 수를 반환.

인수가 전달되지 않으면 Infinity 반환

배열을 인수로 전달받아 배열의 요소 중에서 최소값을 구하려면 Function.prototype.apply 메소드 또는 스프레드 문법을 사용해야 한다.

Math.min.apply(null, [1, 2, 3]); // 1

apply 메소드

첫 번째 인자로 객체를 넘겨야한다. this에다가 객체를 넣어야하므로 null을 넣어준다. 

Math.min.apply(null, arr);

 

Number.MAX_SAFE_INTEGER 

자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수값

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 10부제  (0) 2021.04.14
JS알고리즘 | 홀수  (0) 2021.04.13
JS알고리즘 | 1부터 N까지의 합  (0) 2021.04.11
JS알고리즘 | 연필 개수  (0) 2021.04.11
JS알고리즘 | 삼각형 판별하기  (0) 2021.04.10

+ Recent posts