썸네일 [JS] 문제 54 - 연속되는 수 문제 : 연속되는 수가 맞으면 YES, 틀리면 NO를 출력한다. 배열 비교하는 방법 1. JSON 이용하여 배열 비교 JSON.stringify : json, Object 객체를 문자열로 변환 JSON.parse : 문자열을 json, Object로 변환 const input= "1 2 3 4 5"; const inputData = input.split(' ').map(v => parseInt(v)); const answer = [] for(let i = inputData[0];i parseInt(v)); const answer = [] for(let i = inputData[0];i
[JS] 문제 31번 자바스크립트 자료형의 복잡도 다음 배열 내장함수의 시간 복잡도가 O(1)이 아닌 것을 모두 고르시오. 1) arr[i] 2) arr.push(5) 3) arr.slice() 4) arr.pop() 5) arr.includes(5) 3. arr.slice() begin부터 end(end 미포함)까지 복사본을 새로운 배열 객체로 반환한다. 그렇기 때문에 배열의 길이에 따라 실행 시간이 길어지기 때문에 시간 복잡도는 O(n)이다. 5. arr.includes(5) includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별한다. includes(5)는 arr의 배열 요소를 처음부터 5가 나올때까지 실행 만일 5가 배열의 끝에 있다면 배열의 길이만큼 실행 시간이 길어지기 때문에 시간 복잡도는 O(n)이다. 이해가 가지 않는다면 B..
썸네일 Big O 표기법이란? 자바스크립트 예제로 알아보자! Big O natation Big O 표기법의 필요성 여러가지 코드를 서로 비교하고 성능을 평가하기 위해서 왜 중요한가? 코드챌린지, 면접, 큰 데이터셋을 다루는 기업에서 성능이 좋은 코드가 필요하기 때문에 정확한 전문용어를 사용하는 것이 중요함. 여러 접근법의 장단점을 알 수 있음. 비효율적인 코드를 찾는데 도움이 됨. 간단하게 Big O 표기법을 표현하는 방법 1~n까지 모두 더하는 function 만들기 function addUpTo1(n) { let sum =0; for(let i =1;i O(1) O(2n^2) => O(n^2) O(n^2+2n-8) => O(n^2) 시간 복잡성과 공간 복잡성 시간 복잡성 시간 복잡성을 구하는 요령 1. 연산(덧셈,뺄셈,곱셈,나눗셈)은 상수임. O(1) 2. 변..
[JS] 문제37-반장선거 중복 개수 찾기/set 문제 - 새 학기를 맞아 호준이네 반은 반장 선거를 하기로 했습니다. 그런데 표를 하나씩 개표하는 과정이 너무 번거롭게 느껴진 당신은 학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램을 작성하기로 하였습니다. - 입력 : 원범 원범 혜원 혜원 혜원 혜원 유진 유진 - 출력 : 혜원(이)가 총 4표로 반장이 되었습니다. 풀이 1. 중복 없는 값만 가지는 set을 이용하여 유일한 값을 뽑아내서 (변수명 : set) 배열로 만든다. (변수명 : setArr) 2. input값과 유일한 값인 setArr와 비교하여 같으면 카운팅한다. setArr[0] === arr[0] 은 "원범"이다. 값이 같으므로 count =1 setArr[0] === arr[2] 는 "원범" != "..
썸네일 [JS] 2562 최댓값 2022.09.08 2562 최댓값 https://www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 문제 9개의 서로 다른 자연수가 주어질때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다. 풀이 const fs ..
썸네일 [JS] 3052 나머지 중복제거(Set/filter&indexOf) 3052 나머지 https://www.acmicpc.net/problem/3052 문제 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 풀이 const fs = require('fs'); const inputData = fs .readFileSync(0,'utf8') .toString() .trim() .split('\n') .map((i) => parseInt(i)) // inputData의 모든 수를 42로 나눈 나머..
썸네일 [JS] 1546 평균 https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 문제 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 이를 평균 내는 프로그램을 작성하시오. 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 첫째 줄에 새로운 평균을 출..
썸네일 [JS] 10818 최소,최대 for문/Math 메서드 2022.09.06 10818 최소,최대 https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 첫째 줄에 ..
썸네일 [JS] 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 2022.08.25 https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 문제 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성.흰색 피스의 개수가 주어졌을 때, 몇 개가 더 필요하거나 덜어야되는지 코드 작성. 검정색 피스는 모두 있고, 흰색 피스는 개수가 올바르지 않음. 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 ..
썸네일 [JS] 1110 더하기 사이클 문자열 / 숫자 ㅈ2022.08.24 https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 1110 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 ..
썸네일 [JS] 10951 A+B-4 https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 10951 A+B-4 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 각 테스트 케이스마다 A+B를 출력한다. 풀이 problem : 10952번과 유사하지만 입력 마지막에 0이 두개 들어오지 않기 때문에 케이스가 몇 개 인지 알 수 없다 solve : 입력값의 길이를 이용하여 케이스가 몇 개 인지 파악하기. const..
썸네일 [JS] A+B-5 for/while/shift 2022.08.23 A+B-5 https://www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력은 여러 개의 테스트 케이스로 이루어져 있다.입력의 마지막에는 0 두 개가 들어온다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 각 테스트 케이스마다 A+B를 출력한다.풀이 길이로 테스트 케이스 계산하기. const fs = require('fs'); const inputData = fs.readFileSync(0,'utf8')...