코딩테스트(17)
-
[프로그래머스] 괄호 회전하기
괄호가 맞게 열고 닫힌 문자열인지 확인하는 문제이다. "[({})]"이 입력값이라면, "({})][" 처럼 위치를 이동하며(원래위치로 돌아올 때 까지) 괄호가 제대로 열리고 닫힌 경우는 몇 번(횟수)인지 return 뒤 에서부터 비교한다고 하면 만약, 괄호가 "(" 다음 ")" 이라면 "({})" 순이라면 1. ")"와 "}"는 짝이 맞지 않음 > ")"을 체크해야 할 리스트에 저장 2. "}"와 "{" 짝 맞음 3. "(" 짝 없음, 하지만 체크할 리스트에 있는 ")"와 짝맞음 와 같은 방식으로 해결하였다. * dict에 "{", "(", "["가 key로 존재하지 않는 이유! 제대로 된 괄호라면 "}", ")", "]"가 먼저 나와서 check(체크해야 할 리스트)에 저장되어 있어야 함 functio..
2023.02.22 -
[프로그래머스] 직사각형 별찍기
가로가 n, 세로가 m인 직사각형 형태의 별을 출력하는 문제이다. repeat()을 사용하면 간단하게 해결할 수 있다. "반복할 문자열".repeat(반복횟수) 형태로 작성하면 된다! function solution(n, m) { return ("*".repeat(n) + "\n").repeat(m); } 이렇게 제출하였는데 오류가 발생하였다. 생각해보니 기본으로 주어지는 코드가 아래와 같았고 나는 오류인줄 알고, function solution으로 변경하여 풀었다. process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { const n = data.split(" "); const a = Number(n[0]), b = Number(n[..
2023.02.22 -
[프로그래머스] 점프와 순간 이동
1. 앞으로 K만큼 이동 => 건전지 사용량 K 2. (현재까지 온 거리 * 2)위치로 이동 => 건전지 사용X => 2번 방법을 많이 사용하는 것이 유리! 2번 사용을 우선으로 하고, 어쩔 수 없을 때 1번을 사용하는 것으로 문제를 풀었다. 도착한 위치부터 0위치로 돌아간다고 생각했을 때, 위치가 짝수일 때는 2번 방법을 사용해서 절반만큼 돌아가고, (곱하기 2한 위치로 이동하니까) 위치가 홀수일 경우는 1번을 사용하여 1만큼 돌아갈 수 있다. 즉, 2로 나누어 떨어지면 사용량 0, 아니면 사용량 1이다. 예) 2500, 1250, 625, 624, 312, 156, 78, 39, 38, 19, 18, 9, 8, 4, 2, 1, 0 function solution(n) { let ans = 0; whi..
2023.02.20 -
[프로그래머스] N개의 최소공배수
function solution(arr) { var answer = 1; let yaklist = []; let yakjoin = []; arr.forEach((num) => { let newnum = num; let yak = []; var icopy = 0; // 약수를 구하는 코드 while (icopy !== 1 && newnum !== 1) { for (i = 2; i { let max = 1; yaklist.forEach((list) => { let listnum = list.filter((element) => nums === element).length; max = max > listnum ? max : listnum; }); answer *= nums ** max; }); return an..
2023.02.20 -
JavaScript의 match함수
match와 gi 대소문자 구분하지 않고 찾아줌 "aPple".match(/p/gi) //return ["P", "p"] match와 ? 만약 문자열에 찾으려는 단어가 없다면 null이 return된다. match가 return하는 값의 길이를 구하는 코드를 짰는데 match결과가 null이면 error가 발생한다. 반면, 물음표를 붙여주면 undefined로 처리되어 에러가 발생하지 않는다. "aPple".match(/g/gi).length; // TypeError: Cannot read properties of null (reading 'length') // at Object. (c:\Users\USER\Algorithm\level2\022js:1:33) // at Module._compile (no..
2023.02.13 -
[프로그래머스]두 정수 사이의 합
이것이 문제 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 내가 작성한 답^^! def solution(a, b): if a==b: answer=a else: numlist=[a,b] larger=max(numlist) smaller=min(numlist) if 0 in numlist: numlist.remove(0) nozerolist=numlist[0] if..
2021.09.24 -
[프로그래머스]시저암호
시저암호는 문자열 s에 있는 알파벳들을 n만큼 밀어서 다른 알파벳으로 만드는 암호화 방식이다. 조건 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 소문자와 대문자는 따로 생각하는 것! 최종작성한 코드이다. def solution(s, n): answer = ""#민 문자열을 저장할 변수 al_big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"#대문자 리스트 al_small="abcdefghijklmnopqrstuvwxyz"#소문자 리스트 i=0#s문자열을 인덱싱할 값 for alpha in s: ss="" if alpha == " ": ss=s[i] elif alpha in..
2021.09.15