[코테강의/JS] 바둑이 승차
문제 접근법 감이 잡혔다고 할 수 는 없지만 , 위 문제처럼 1번 바둑이를 넣을때, 안넣을때 처럼 O or X 2가지를 선택할 수 있는 부분집합의 형태는 dfs 를 사용하면 된다는 것을 느낄 수 있었다. 또 하나 배운것은 max 메소드를 사용해서 둘중에 큰 값을 얻을 수 있다는 것이다. 더보기 console.log(Math.max(5, 3)); const fs = require("fs"); BOJkey = 1; let input = fs .readFileSync(BOJkey ? "./코딩테스트강의/섹션8/input.txt" : "./dev/stdin") .toString() .trim() .split("\n"); let limit = input.shift().split(" ")[0]; console.lo..
[백준/JS] 16719 ZOAC
문제링크 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 배운점 이 문제 정말 맞왜틀 정말 왜 안돌아가는지.. 결국 원인을 찾아냈다. 코드를 보면 let idx 가 dfs 함수안에 선언된 것을 알 수 있다. 이게 밖에 선언이 되어있어서 전역변수 역할을 하게 되면서 slice 되는 인덱스가 계속 바뀌게 되는 치명적인 오류가 발생했다. 아.. 그래도 결국 고쳐서 다행이다. 또한 자바스크립트에서 배열을 복사할때에는 스프레드 연산자를 사용하여 깊은 복사를 해주는 것을 잊지 않아야한다. const dfs = (..
[코테강의/JS] 합이 같은 부분집합
function solution(arr){ let answer="NO", flag=0; let total=arr.reduce((a, b)=>a+b, 0); let n=arr.length; function DFS(L, sum){ if(flag) return; if(L===n){ if((total-sum)===sum){ answer="YES"; flag=1; } } else{ DFS(L+1, sum+arr[L]); DFS(L+1, sum); } } DFS(0, 0); return answer; } let arr=[1, 3, 5, 6, 7, 10]; console.log(solution(arr));
[코테강의/JS] 부분집합 구하기
input = 3; check = new Array(input + 1).fill(false); result = ""; const dfs = (v) => { if (v === input + 1) { result = ""; for (let i = 1; i
이진트리 순회 (깊이우선탐색)
개념확인 위 트리를 전위순회방식으로 출력해보세요! 더보기 1 2 4 5 3 6 7 function solution(n) { let answer = ""; function DFS(v) { if (v > 7) return; else { console.log(v); DFS(v * 2); DFS(v * 2 + 1); } } DFS(n); return answer; } console.log(solution(1)); 위 트리를 중위순회방식으로 출력해보세요! 더보기 4 2 5 1 6 3 7 function solution(n) { let answer = ""; function DFS(v) { if (v > 7) return; else { DFS(v * 2); console.log(v); DFS(v * 2 + 1); ..
[코테강의/JS] 이진수 출력
배운점 자바스크립트에서 몫을 출력하기 위해서는 다음과 같이 parseInt 를 사용한다. parseInt(n / 2) 문제풀이 function solution(n) { let answer = ""; const dfs = (n) => { if (n === 0) { return; } else { dfs(parseInt(n / 2)); console.log(n % 2); } }; dfs(n); return answer; } solution(11);
[코테강의/JS] 재귀함수와 스택프레임
function solution(n) { function DFS(L) { if (L == 0) return; else { DFS(L - 1); console.log(L); } } DFS(n); } solution(3); //1 //2 //3 function solution(n) { function DFS(L) { if (L == 0) return; else { console.log(L); DFS(L - 1); } } DFS(n); } solution(3); //3 //2 //1 두 코드에서 else 문을 보면 콘솔로그와 DFS 함수의 위치만 바뀌었을뿐인데 출력결과가 반대로 나온다. 그 이유가 뭘까? 첫번째 코드의 스택프레임이다. 따라서 그려보면 왜 그렇게 동작하는지 이해할 수 있었다. 스택프레임은 매개변..
[백준/JS] 20436 ZOAC 3
문제링크 20436번: ZOAC 3 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의 www.acmicpc.net 배운점 자바스크립트에서 ["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"] 의 배열에서 w 문자가 몇번째 인덱스인지 알려면 어떻게 해야할까요? 더보기 let keyboard = [ ["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"], ["a", "s", "d", "f", "g", "h", "j", "k", "l"], ["z", "x", "c", "v", "b", "n..
자바스크립트 여러개의 값 반환하기
참고자료 https://bamtory29.tistory.com/entry/Javascript-%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C-%EC%97%AC%EB%9F%AC-%EA%B0%92-%EB%B0%98%ED%99%98%ED%95%98%EA%B8%B0 [Javascript] 함수에서 여러 값 반환하기 함수에서 반환값이 하나만 나온다고 했었는데 사용하다보면 여러 값을 반환하고 싶은 경우가 생깁니다. 1. 여러 값 반환하기 return명령은 함수에서 값을 반환하지만 복수의 값을 반환할 수는 없 bamtory29.tistory.com 이 글은 위 블로그 자료을 타이핑하며 공부한 글입니다. 자세한 내용은 위 자료를 참고해주세요. 1. 여러 값 반환하기 return 명령은 함수에서 값을 ..
if문 중첩에 관한 고찰
2022.07.06 - [공부기록/자바스크립트 코딩테스트] - [백준/JS] 2753 윤년 [백준/JS] 2753 윤년 문제링크 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 20 ehddud100677.tistory.com 윤년 문제를 풀다가 if 문이 중첩되는 형태에 대해 고민해봤다. if 문이 중첩이 되는 저러한 형태가 보기 좋지않다고 생각이 되었기 때문이다. if (input % 4 === 0) { if (input % 100 === 0) { if (input % 400 === 0) { console.log(1); } else { console.l..