문자열

문제https://www.acmicpc.net/problem/20006 풀이이번 문제는 class를 이용해 풀이해 봤다.딱 보고 대기방을 클래스로 하면 정렬이나 입장과 같은 동작을 메서드로 구현해 조금 더 가독성 좋은 코드를 만들 수 있을것 같았다. 각 대기방을 클래스로 구현해두고 입장 가능 여부, 입장과 같은 동작을 메서드로 구현했다. 이번 문제를 풀며 실수했던 것은 문자열을 sort 메서드를 이용해 정렬할 때는 숫자를 정렬할때 처럼 a - b가 아니라 서로 비교연산자를 이용해야한다는 것이다.sortName() { this.nameList.sort((a, b) => { if (a[1] b[1]) return 1; });} 코드const input = require("fs") .readFil..
문제https://www.acmicpc.net/problem/12919 풀이이 문제의 경우 S 문자열 부터 T 까지 구하는것 보다, T에서 하나씩 소거하며 경우의 수를 찾는것이 더 로직을 설계하는데에 이점이 있다고 판단했다. 이러한 방법을 이용해 두 가지 로직을 구현했다.맨 뒤의 A가 있다면 맨 뒤의 A를 없애고 재귀 동작을 진행맨 앞에 B가 있다면 역순으로 바꾸고 맨 뒤에 있는 B를 제거하고 재귀 동작을 진행2번 동작에서 맨 앞의 B를 먼저 제거하지 않는 것은 문자열이 길어질 수록 JS의 shift() 메서드를 사용하면 시간 복잡도가 미세하나마 증가할 것을 우려, 완전탐색을 진행하는 메서드를 줄이기 위해 reverse() 메서드 적용뒤 pop()하여 기능을 구현했다.  코드const input = re..
문제https://www.acmicpc.net/problem/4659 풀이const input = require("fs") .readFileSync( process.platform === "linux" ? "/dev/stdin" : __dirname + "/example.txt" ) .toString() .trim() .split("\n") .map((e) => e.trim());let answer = [];const checkMou = (st) => { const aeiou = /[aeiou]/.test(st); return aeiou;};const checkTriple = (st) => { let aCnt = 0; let cnt = 0; for (let s of st) { ..
문제https://www.acmicpc.net/problem/2941 첫 번째 풀이처음 시도한 풀이는 문자열을 인덱스별로 탐색을 진행할때 크로아티아 알파벳의 첫 글자가 나오면 그 다음 문자들을 확인하는 방식을 선택했다. 주의할 점은 for문을 이용한 탐색을 진행할 때 전체 길이의 - 2 까지 탐색한다는 것이다. 이는 dz=가 나오면 인덱싱이 안되는 경우의 수가 있을 수 있다고 판단했다. 코드// 첫 시도(성공)const input = require("fs") .readFileSync( process.platform === "linux" ? "/dev/stdin" : __dirname + "/example.txt" ) .toString() .trim() .split("\n");const st..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이수학적으로 접근식을 생각하며 괜찬은 문제이다. 이 문제의 답은 결국 탑승 가능한 마지막 시간을 출력해야하기 때문에 대기 인원과 현재 시간을 중점으로 생각하면 점화식이 나오게된다. 시간을 오름차순으로 정렬했으며 각 시간마다 승객들을 탑승가능 인원수 만큼 shift() 해주었으며, 마지막 타임에 대기 인원의 유무와 대기 인원이 온 시간을 종합하여 답을 도출했다. 코드function solution(n, t, m, timetable) { const arriveTimes = Array.from({ length..
문제https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이입력을로 받은 배열에 저장되어 있는 숫자들을 2진수로 변환한 뒤, 자릿수를 맞춰주고 OR 연산을 이용해 벽의 구현을 진행해준다. 코드const solution = (n, arr1, arr2) => { arr1 = arr1.map(e => { let binary = e.toString(2); const len = binary.length; for (let i = 0; i {..