목록알고리즘/프로그래머스 (18)
곽로그
문제 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 좀 더 간단하게 풀 수 있는 방법은, 날짜를 절대치로 환산해서 비교하는 방법이지만, 처음 이 문제를 풀 때는 그 풀이는 생각조차 나지 않았다. 여기서 접근하는 방법은 날짜 비교다. 처음에 접근한 방식은 (개인정보수집일자_월 + 유효기간) = x 를 기준으로 만료연도 = 개인정보수집일자_연 + x //12 , 만료월 = x%12 로 풀었다. 그런데 테스트 케이스 17번에서 계속 에러가 ..
문제 programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴 programmers.co.kr 풀이 문제그대로! 코드 /* 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 ..
문제 programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 풀이 순서대로 map 에다가 숫자를 채워넣으면 "방향이 바뀌면서 숫자가 채워진다"라는 규칙을 발견할 수 있다. 이때 방향은 좌하향 → 오른쪽 → 좌상향 순서대로 변한다. 이때 '언제 방향이 변하나'를 보면 좌하향에서 오른쪽으로 변할 때는 이동하려는 row가 범위를 벗어날때 이다. 오른쪽에서 좌상향으로 방향이 변할 때는 이동하려는 column의 인덱스가 row보다 클때, 즉 co..
문제 programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 풀이 초 단위로 트럭과 다리의 상태를 써내려가다보면 어떻게 해야할지가 보인다. 초 대기트럭 다리 0 7 4 5 6 _ _ 1 4 5 6 7 _ 현재 다리의 무게+다음트럭의 무게 다리가 버틸 수 있는 무게 - continue 3 5 6 4 _ 다리에 있는 트럭의 위치를 1칸씩 이동한다 현재 다리의 무게+다음트럭의 무게
문제 programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 풀이 DFS로 풀 수 있다. 우선 (x,y)와 같은 색인 영역의 수를 구하는 함수를 생각해보자. 아래와 같이 색칠판이 있을 때 (3,0)을 기준으로 (3,0)과 같은 색인 영역의 크기를 구해보자. (3,0)에서 북, 동, 남, 서 를 차례로 탐색한다. (3,0)과 이웃한 셀을 (x,y)라고 하자. (x,y)이 (3,0)과 같은 영역으로 분류되려면, 영역내의 셀이어야 한다. ..
문제 programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 풀이1 방법 1) 변수 - skillDeploy : 배포할지 말지 검사하는 큐 - skillDevelop :스피드 만큼 진행하는 큐 2) 초기화 - skillDeploy에 progresses순서대로 add 한다 3) 반복 - skillDeploy의 맨 위의 스킬의 진행도를 확인한다 - 100 미만이면 skillDeploy에서 하나씩 꺼내서 스피드만큼 진행시킨다음 ..
문제 programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이1 - 이중 for문으로 풀면 간단하게 풀 수 있다. - 처음에 틀렸던 부분은 else{ ++count; break; } 이 부분인데, 문제 조건 중 "3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다" 를 고려하지 않았고, 증가하지 않으면 더 이상 count를 하지 않는 것을 ..
문제 programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 1) 선이수과목 리스트를 만들었다. 선행스킬리스트가 CBD라고 주어졌으면 과목 B의 선이수스킬은 C이고, D의 선이수 스킬은 B가 된다. 이런 식으로 리스트를 만들었고, 선이수스킬이 없는 경우에는 ' ' 을 넣었다. 리스트의 인덱스는 알파벳 대문자의 아스키 코드를 이용했다. preSkillList = new char[26]; Arrays.fill(preSkillList,' '); for(int index = 0 ; index