프로그래머스에서 vim으로 코딩을 하다보면 tab과 space 4칸 공백이 섞여있습니다. 아마 한쪽으로 바꿔주는 기능을 적용하지 않아서 그런 것 같아요. 공백과 탭이 섞여있으면 파이썬을 쓸 때 실행 자체가 안되고, 블로그에 코드를 붙여넣을 때 보면 들쭉날쭉한게 이쁘지 않습니다. 항상 스페이스 n칸이나 탭으로 고정시키는 방법은 아직 찾지 못했지만, 이미 작성된 공백 혹은 탭을 바꿔줄 방법은 있습니다. vim의 string replace 기능을 이용하면 됩니다. // space를 tab으로 :%s/ /\t/g // tab을 space로 :%s/\t/ /g 끗
문제 링크 programmers.co.kr/learn/courses/30/lessons/72416 코딩테스트 연습 - 매출 하락 최소화 CEO를 포함하여 모든 직원은 팀장 또는 팀원이라는 직위를 가지고 있으며 그림에서는 팀장과 팀원의 관계를 화살표로 표시하고 있습니다. 화살표가 시작되는 쪽의 직원은 팀장, 화살표를 받는 programmers.co.kr 풀이 혼자서 푼 건 아니고 친구(dutchcoffee.tistory.com/)가 핵심 아이디어를 알려주었습니다. 😥 각 정점 $n$이 팀장으로 있는 팀을 팀 $n$이라고 합시다. 팀 n에서 적어도 한 명이 참석한다는 조건을 만족시킬 때, 팀장이 참석하는 경우와, 팀장이 참석하지 않는 경우의 최솟값을 구해주면 됩니다. 이 값을 $d[n][0], d[n][1]..
문제 링크 programmers.co.kr/learn/courses/30/lessons/72415 코딩테스트 연습 - 카드 짝 맞추기 [[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] 1 0 14 [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] 0 1 16 programmers.co.kr 풀이 완전 탐색 문제입니다. 1) 게임판의 특정 칸에서 다른 임의의 칸으로 이동할 때 드는 최소 동작 횟수를 구해주는 함수를 만들어줍시다. bfs로 한 칸짜리 4방향(↑, ↓, →, ←), 가장 가까운 카드 혹은 벽(Ctrl + ↑, ↓, →, ←)을 queue에 넣어주면서 돌리면 쉽게 구할 수 있습니다. line(17 ~ 56) 2) 어떤 순서로 카드를 없애나갈지 선..
문제 링크 programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 풀이 개인적으로 엄청 헤맸던 문제입니다. 시간 0 ~ 360,000에 대해 시뮬레이션을 돌리면 쉽게 풀리는데, 그 생각을 못하고 재생 시작, 재생 끝나는 구간별로 처리하려다 보니 코드가 꼬여 시뮬레이션 방식으로 다시 풀게 되었습니다. 1) 모든 시간을 초 단위로 통일하는 게 편합니다. 2) 모든..
문제 링크 programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 풀이 알고리즘을 조금이나마 공부해본 입장에선 전형적인 문제였습니다. 1-a) 플로이드-..
문제 링크 programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이 1) 각 order마다 가능한 모든 메뉴 조합을 구해줍니다. ( line 8 ~ 18 ) 2) order 전체에 대해1에서 구한 각 조합이 몇 번씩 나오는지 카운팅해줍니다. ( line 16 ) 3) course 개수 별로 가장 많이 나온 조합들을 리스트로 구해줍니다. ( line 20 ~ ) 정답 코드 Javascript function solution(or..
문제 링크 programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가 programmers.co.kr 풀이 문제에서 설명한 규칙대로 구현하면 됩니다. 굳이 팁을 찾자면 원본 문자열을 수정하는 것보다 필요할 때마다 새로운 문자열을 만드는 식으로 구현하는 게 더 편할 듯합니다. 정답 코드 #include using namespace std; bool isLower(char c) { return 'a'
문제 링크 programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴 programmers.co.kr 풀이 문제에서 친절하게 해결 방법을 설명해줍니다. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형 잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형 잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시..
문제 링크 programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 풀이 간단합니다. 가능한 모든 단위(1 ~ s의 길이)로 문자열을 잘라 압축해보고, 그 결과 중 가장 작은 값을 고르면 됩니다. 코드에선 구현상 편의를 위해 마지막에 더미 스트링을 하나 끼워넣었습니다. 정답 코드 const compressData = tokens => { let s = ''; let prev = ''; let cnt = 0; tokens.for..