문제 링크 https://www.acmicpc.net/problem/4828 4828번: XML 인터넷프로그래밍 교수 이다솜은 XML이야말로 세상을 바꿀 혁신적인 언어라고 믿으며, 항상 학생들에게 XML의 장점을 어필한다. 그러나 잘못 사용되었다가는 지구를 파괴할 수도 있는 무시무시 www.acmicpc.net 풀이 죽여..줘... 정답 코드 const fs = require('fs'); const stdin = fs.readFileSync('/dev/stdin').toString().split('\n'); const input = (() => { let line = 0; return () => stdin[line++]; })(); const main = function () { let s, ans = ..

개발 초보가 나름대로 오픈소스를 살펴보았습니다. 큰 그림만 따라가며 이해했고, 잘못되거나 생략된 정보가 많을 수 있습니다. 혹시라도 잘못된 부분을 댓글로 알려주시면 반영하도록 하겠습니다. 들어가며 요즘 자바스크립트를 더 깊게 공부하고 있습니다. 어제 공부한 부분은 이벤트와 관련된 부분인데요, 아시다시피 이벤트 핸들러를 등록하는 방법은 세 가지가 있습니다. HTML attribute로 등록 DOM property로 등록 addEventListener()를 이용한 등록 1, 2는 자바스크립트 레벨에서 눈에 보이는 뭔가가 있습니다. getAttribute(), 혹은 이벤트 관련 프로퍼티로 핸들러 함수를 직접 조회할 수 있거든요. 근데 addEventListener()는 좀 다릅니다. property, attr..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81305 코딩테스트 연습 - 시험장 나누기 3 [12, 30, 1, 8, 8, 6, 20, 7, 5, 10, 4, 1] [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 5], [2, 10], [3, 0], [6, 1], [11, -1], [7, 4], [-1, -1], [-1, -1]] 40 programmers.co.kr 풀이 자바스크립트로 풀었는데 큰 문제가 있었습니다. 제출 시 몇몇 효율성 테케에서 의문의 런타임 에러를 뱉더라구요. 최대 범위 테스트 케이스를 따로 만들어 로컬에서 돌려보니 다음 에러가 원인이었습니다. RangeError: Maximum call st..

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81304 코딩테스트 연습 - 미로 탈출 4 1 4 [[1, 2, 1], [3, 2, 1], [2, 4, 1]] [2, 3] 4 programmers.co.kr 풀이 그래프 재정의 트랩에 대해 잘 생각해봅시다. 트랩에 도착하면 트랩과 연결된 모든 간선의 방향이 반대가 됩니다. 그럼 같은 트랩을 두 번 밟으면? 다시 원래대로 돌아옵니다. 트랩끼리 연결되어 있어도 마찬가지입니다. 모든 트랩을 두 번씩 밟으면 원래의 그래프로 돌아옵니다. 결국 특정 트랩을 밟았는지 여부는 최대 한 번까지만 체크하면 되고, 한 번 더 밟게 되면 밟지 않았을 때와 같은 상태라고 생각할 수 있습니다. 그럼 각 트랩마다 밟거나, 안 ..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 풀이 처음 문제를 봤을 땐 현재 행을 기준으로 위, 아래쪽 스택 두 개를 이용해서 관리하면 안 될까? 하고 생각했습니다. 근데 이러면 Z연산을 구현 못하더라구요.. 결론부터 말하면 양방향 링크드 리스트를 구현해서 풀 수 있습니다. 1) U, D 연산 이전, 다음 링크를 연속해서 타고 가는 방식으로 구현..