ALL
[알고리즘] 순열구하기
문제 10이하의 N개의 자연수가 주어지면 이 중 M개를 뽑아 일렬로 나열하는 방법을 모두 출력합니다. 풀이 function solution(m, arr){ let answer = ''; const n = arr.length; const visited = new Array(n).fill(0); let tmp = new Array(m).fill(0); function DFS(L){ if(L===m){ answer+=`${tmp}\n`; } else{ for(let i = 0; i < n; i++){ if(visited[i]===0){ visited[i]=1; tmp[L]=arr[i]; DFS(L+1); visited[i]=0; } } } } DFS(0); return answer; } let arr =[3,..
[알고리즘] 백준 9095번: 1, 2, 3 더하기 (완전탐색,재귀) W_node.js
문제 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력예시 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 3 4 7 10 출력예시 각 테스트 케이스마다,..
[알고리즘] 중복순열 구하기
문제 1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열하는 방법을 모두 출력합니다. 입력 첫 번째 줄에 자연수 N(3
[알고리즘] 최대점수 구하기(DFS)
문제 이번 정보올림피아드대회에서 좋은 성적을 내기 위하여 현수는 선생님이 주신 N개의 문제를 풀려고 합니다. 각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어지게 됩니다. 제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 해야 합니다. (해당문제는 해당시간이 걸리면 푸는 걸로 간주한다, 한 유형당 한개만 풀 수 있습니다.) 입력설명 첫 번째 줄에 문제의 개수N(1
[알고리즘] 합이 같은 부분집합(DFS)
문제 N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합(Disjoint Set)이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어야 합니다. 예를 들어 {1, 3, 5, 6, 7, 10}이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있다. 입력설명 첫 번째 줄에 자연수 N(1=arr.length){ for(let i = 0; i0)cnt.push(tmp); } else{ visited[n]=1; DFS(n+..
[알고리즘] 프로그래머스 Lv.1 - 모의고사
문제 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 function solution(arr) { const supo = [[1, 2, 3, 4, 5],[2, 1, 2, 3, 2, 4, 2, 5],[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]; let answer = []; let points = [0,0,0]; for(let i = 0; ia+b); } let answers = [1,2,3,..
[알고리즘] 아나그램 (해쉬)
문제 Anagram이란 두 문자열이 알파벳의 나열 순서를 다르지만 그 구성이 일치하면 두 단어는 아나그램이라고 합니다. 예를 들면 AbaAeCe 와 baeeACA 는 알파벳을 나열 순서는 다르지만 그 구성을 살펴보면 A(2), a(1), b(1), C(1), e(2)로 알파벳과 그 개수가 모두 일치합니다. 즉 어느 한 단어를 재배열하면 상대편 단어가 될 수 있는 것을 아나그램이라 합니다. 길이가 같은 두 개의 단어가 주어지면 두 단어가 아나그램인지 판별하는 프로그램을 작성하세요. 아나그램 판별시 대소문자가 구분됩니다. 강사님의 풀이 function solution(str1, str2){ let answer='YES'; let hash = new Map(); for(let x of str1){ if(has..
[알고리즘] 학급회장 (해쉬)
문제 학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다. 투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다. 선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작성하세요. 반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다. 입력예제 BACBACCACCBDEDE 풀이 function solution(s){ let answer; let sH = new Map(); for(let x of s){ if(sH.has(x)) sH.set(x,sH.get(x)+1); else sH.set(x,1); } let max = Number.MIN_SAFE_INTEGER; for..
프로그래머스 프론트엔드 데브코스 2기 지원 후기(코테 탈락)
2022년 3월 18일부터 5개월간 진행되는 프로그래머스 데브코스 프론트엔드 과정 2기에 지원했었다. 혼자 자바스크립트를 공부하면서 프론트엔드 분야를 했으면 좋겠다고 생각하고 있었는데, 인터넷에서 마침 데브코스를 알게 되어서 지원하게 되었다. 찾아보니 국비 교육은 대부분 자바, 백엔드 과정인 경우가 많아 퇴사 후에 혼자서 공부할지 아니면 교육을 받을지 고민하고 있었는데, 데브코스 과정은 프론트, 백엔드로 과정이 나뉘어 있고 커리큘럼도 괜찮아 보였다. 프론트 과정에서는 자바스크립트에 대해 어느 정도 기본기가 갖춰진 지원자를 원한다고 자격조건에 명시를 해두었는데, 떨어지더라도 경험이겠거니 하고 지원하게 되었다. 1. 자기소개서 사실 자소서에서 떨어지면 어떡하나 걱정을 했는데, 붙어서 약간 놀랐다. 지원하면 ..
[모던 자바스크립트 딥다이브] switch문, while문
제어문 제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행 할 때 사용한다. 일반적인 코드는 위에서 아래로, 순차적으로 실행되는데 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다. 그렇기 때문에 코드의 흐름을 어렵게 만들어 가독성을 해칠 수 있다는 단점이 있다. switch문 switch문 : switch문은 주어진 표현식을 평가해 그 값과 일치하는 case문이 있다면 그에 해당하는 코드를 실행한다. 이 때 switch문의 표현식과 일치하는 case가 없다면, default로 이동해 그 코드를 실행한다. default는 옵션. if...else 문의 조건식은 불리언 값으로 평가되는데 (true or false) switch문의 표현식은 불리언 보다는 문자열 or 숫자값인 경우가 많다...