본문 바로가기

분류 전체보기181

[카카오2020] 괄호 변환 https://school.programmers.co.kr/learn/courses/30/lessons/60058 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')'.. 2023. 12. 10.
[카카오2018] [3차] 파일명 정렬 https://school.programmers.co.kr/learn/courses/30/lessons/17686# 문제 요점 파일명 정렬은 문자가 아닌 숫자를 반영한다 파일명은 100 글자 이내로, 영문 대소문자, 숫자, 공백(" "), 마침표("."), 빼기 부호("-")를 포함한다. 파일명은 영문자로 시작하며, 숫자를 하나 이상 포함한다. head-number-tail 구조로 이루어져있다 head는 숫자아닌 문자만 오고 최소 한 글자 number는 숫자 한 글자에서 다섯글자 연속된 숫자 앞쪽에 0이 올 수 있다 tail은 숫자, 문자 다 올 수 있다. 아무 글자가 없어도 된다. 정렬기준 1. head 사전순 (대소문자 구분없음) 2. head가 같으면 number순으로 정렬 (앞에 0을 제외한 숫자.. 2023. 12. 9.
H-Index https://school.programmers.co.kr/learn/courses/30/lessons/42747# 발표논문 n개중, (h이상 인용된 논문이 h이상 + 나머지가 h이하)일때의 h => 즉 "h번 이상 인용된 논문이 h편 이상인 최대 h를 구하라" 가 문제의 요점인데 (아니 뭔 수수께끼나구요...) 설명과 예시 코드가 부족하고 표현이 애매해서 문제를 정확히 이해하지 못 했고 결국 다른 분의 해석을 보고 풀었다 핵심은 h의 최대값은 입력값 citations의 길이고, 인용된 횟수와 조건이 맞는 논문 갯수가 일치하는 최대값 구하기 문제이다 예를들어 citations = [ 9000,7000, 10000, 5000, 6000 ] 일때 1번 이상 인용된 논문 = 5편 >= 1편 이상 2번 이상 인.. 2023. 12. 8.
[프로그래머스 lv2] 숫자 카드 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/135807 우선 두가지 경우가 있다 1. 철수는 모두 나눠지는데 영희는 모두 안 나눠지는 경우 2. 철수는 모두 안 나눠지는데 영희는 모두 나눠지는 경우 처음에는 철수, 영희 각각의 최대공약수를 구하고 그것이 상대방의 수를 모두 나눌 수 있는지를 확인하려고 했다 하지만 만약 상대방의 수가 하나라도 나눠진다면 다음 최대공약수를 찾아야하고 log(min(a, b))또 다시 상대방의 배열을 순회 log(n) 하며 확인해야한다. 하지만 이렇게 한다면 제한사항 케이스일때 시간초과가 날 것이다. 사실 문제가 원하는 조건을 잘 뜯어보면 a의 범위를 확 줄일 수 있다 위의 첫번째 경우에서 "철수배열의 수를 모두 나.. 2023. 12. 8.
줄 서는 방법 https://school.programmers.co.kr/learn/courses/30/lessons/12936 첫번째 풀이 (시간초과) 모든 경우를 구한 뒤 k번째 결과를 리턴했다. // 백트래킹 순열 function solution(n, k) { var answer = []; const arr = Array.from({length: n}, (_, i) => i+1); function bt(acc, remain) { if (!remain.length) { answer.push(acc); return; } for (const r of remain) { bt([...acc, r], remain.filter(e => e !== r)); } } bt([], arr); return answer[k-1]; } .. 2023. 12. 8.
substr와 substring의 차이 substr와 substring은 둘다 문자열에서 부분 문자열을 추출하는 메서드이다 하지만 알고리즘 문제를 풀면서 substring의 시간, 공간 효율성이 더 좋아서 이 둘의 차이점을 파헤쳐보았다. substr(시작 인덱스, 길이) 시작인덱스부터 길이만큼의 문자열을 반환한다. 길이가 양수이면 시작인덱스부터 해당 길이만큼의 문자열을 반환하고 (좌 -> 우) 길이가 음수이면 역으로 문자열 끝에서부터 길이만큼의 문자열을 반환한다 (좌 2023. 12. 8.