728x90
⬛ 프로그래머스 (카카오) | LV.3 양과 늑대 - DFS 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 DFS로 깊이 탐색을 시도하되, 방문한 정점에 대한 처리 후 (늑대 ≥ 양 개수) 가 커지는 시점이 오면 return을 시키고 다른 정점에 대해 방문 처리하려고 생각했다. 근데 생각보다 조건을 처리하는 부분이 좀 까다롭게 느껴졌다. 1) DFS를 호출하며 매번 현재 깊이에 대한 양, 늑대 개수 처리를 ..
⬛ 프로그래머스 (카카오) | LV.1 개인정보 수집 유효기간 - 단순 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 n개의 개인정보 중 약관 type에 따라 현재 시점에서 파기할 개인정보 번호 목록을 리턴하는 문제이다. 문제가 요구하는 흐름대로 코드에 구현하면 된다. 🎈 [주의] split 메서드 사용시 실수하기 쉬운 것 (.) 구분자 → split(”\\ .”) 계속 오류가 나서 원인을 못찾다가 ..
⬛ 프로그래머스 | LV.3 있었는데요 없었습니다 (MySQL) https://school.programmers.co.kr/learn/courses/30/lessons/59043 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 이 문제의 경우 두 테이블 간 PK와 FK로 JOIN을 해서 입양일(OUT) B.DATETIME이 보호시작일(INS) A.DATETIME 보다 빠른 케이스를 추출해내야 한다. JOIN으로 대상 테이블 지칭 후, FK 활용하여 ON 조건을 작성하여 풀면 된다. 💚 제출 코드 -- 코드를 입력하세요 SELECT A.AN..
⬛ 프로그래머스 (카카오) | LV.3 미로 탈출 명령어 - 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 문제는 S (x,y) → E(r,c) 까지 k칸으로 갈 수 있는 경로 중 사전 순 가장 빠른 경로를 리턴하고 없으면 impossible을 리턴하라고 되어 있다. 가장 처음 풀이로 생각이 들었던 건 문자열의 사전 순인 [d, l, r, u] 방향으로 순으로 모든 경로를 완전 탐색 해야 하나 ? 였..
⬛ 프로그래머스 | LV.2 광물 캐기 - DFS 완전 탐색 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 문제를 보면서 캐낼 대상인 광물 순서는 고정인데 매번 다이아를 먼저 쓰는 게 최선이 아닐 수 있다고 생각했기 때문에 완전 탐색을 쓰는 게 맞다고 생각했다. 예를 들어 다이아 곡갱이를 초반에 다 써버렸는데 대상 광물 마지막 순서에 다이아가 몰릴 경우 최소 피로도 소모가 아닐 수 있다. 모든 케이스를 다..
⬛ 프로그래머스 | LV.2 무인도 여행 - DFS or BFS 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 이 문제의 경우 DFS로 풀든, BFS로 풀든 시작점에서 갈 수 있는 유효한 무인도를 모두 돌면서 누적한 값을 계속 List에 담아주면서 처리하고 그걸 오름차순 정렬하여 반환하면 되는 문제이다. 나는 BFS로 풀었다. 1) board[][]에 String으로 들어오는 지도 정보를 char 형으로 ..
⬛ 프로그래머스 (Dev-Matching 기출) | LV.3 다단계 칫솔 판매 - DFS 재귀 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 문제를 보면서 DFS로 각 i에 대한 부모로 거슬러 올라가며 금액만 누적처리해주면 되겠다고 생각헀다. 그런데, 이름이 많으니까 좀 헷갈려서 나의 경우에는 각 이름에 대한 인덱스로 접근하여 처리했다. enroll은 Map에 인덱스 담아서 Key로 idx바로 찾도록 해주고..
MySQL에서 두 날짜 간 차이가 필요할 때 활용하는 함수는 두 가지가 있다. 1) DATEDIFF 함수 : 단순히 두 날짜 (일수) 차이만 가져옴 2) TIMSTAMPDIFF 함수 : 연/분기/월/주/일/시/분/초 [단위] 지정하여 그 단위 차이 가져옴 DATEDIFF 함수 사용법 보통 (날짜1-날짜2) 를 반환한다. DATEDIFF(날짜1, 날짜2); TIMESTAMPDIFF 함수 사용법 → 단위에 다음을 지정해주면 두 날짜 사이의 ‘단위’ 기준 차이가 반환된다. SECOND : 초 MINUTE : 분 HOUR : 시 DAY : 일 WEEK : 주 MONTH : 월 QUARTER : 분기 YEAR : 연 TIMESTAMPDIFF(단위, 날짜1, 날짜2)
⬛ 프로그래머스 | LV.2 자동차 평균 대여 기간 구하기 (MySQL) https://school.programmers.co.kr/learn/courses/30/lessons/157342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 1) 날짜 차이 구하고 CAR_ID 기준으로 그룹핑 한 뒤, 추출한 값의 일수가 7일 이상인 경우만 추출한다. → 이때 DATEDIFF(날짜1, 날짜2) 를 활용할 건데, 날짜 차이 + 1을 해줘야 정상 답이 나온다. 🎈 DATEDIFF(ENDDATE, STARTDATE)+1 에서 +1값을 하는 이유 : ..
⬛ 프로그래머스(카카오) | LV.2 두 큐 합 같게 만들기 - 큐 (Queue) 활용 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚 문제 접근 방식 문제를 보고 매번 큰 합의 큐에서 poll하고 작은 합의 큐에 add 해야 되겠다는 생각이 가장 먼저 들었다. Queue 2개 선언해서 각각의 큐에 원소값을 세팅한다. 동시에 두 큐의 총합을 total 에 구하고, 한쪽의 sum만 구해둔다. 만약 total 이 홀수값이라면..
⬛ 프로그래머스 (카카오) | LV. 2 k진수에서 소수 개수 구하기 - 단순 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚 문제 접근 방식 문제 접근이나 구현 자체는 단수하고 비교적 쉬운 편이었다. 기출 문제가 생각보다 쉬워보이면 엣지 케이스를 모두 고려하는 습관을 들여야한다......... 이 문제의 경우, n이 100만인데 일단 데이터 크기가 10만 넘어가면 주의를 해야 된다 더 효율적인 알고리즘을 쓰던지, 자..
CASE WHEN THEN 구문 추출할 SEX_UPON_INTAKE 의 상태에 따라 우리가 원하는 값을 지정해서 출려해주고 싶을 때 사용하면 된다. SELECT ANIMAL_ID, NAME, (CASE WHEN SEX_UPON_INTAKE = 'Neutered Male' THEN 'O' WHEN SEX_UPON_INTAKE = 'Spayed Female' THEN 'O' ELSE 'X' END) FROM ANIMAL_INS; AS 별칭 지정 그리고 보통 CASE구분으로 추출해내는 컬럼명도 별칭 지정해야 하는 경우가 많다. CASE 문으로 해당 열 추출 조건을 처리해서 끝내주는 END 뒤에 AS로 지정할 별칭을 지칭해주면 된다. SELECT ANIMAL_ID, NAME, (CASE WHEN SEX_UPON..
⬛ 프로그래머스 | LV.2 조건에 부합하는 중고거래 상태 조회하기 (MySQL) https://school.programmers.co.kr/learn/courses/30/lessons/164672 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 FROM절로 테이블 선택하고 WHERE 에서 2022년 10월 5일에 해당하는 날짜 행에 대해 추출한 뒤, 출력 컬럼들을 ‘게시글 ID’ 기준 내림차순 정렬하는 문제였다. 💚배운 것 1) 컬럼 출력을 조건에 따라 CASE-WHEN THEN 구문으로 다르게 출력할 수 있다. CASE WHEN (컬럼..
⬛ 프로그래머스 (카카오) | LV.3 파괴되지 않은 건물 - 누적합 ( 😰 ) 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 1차 시도 | 정확성은 통과, 효율성 실패 원인 : skill 행 길이가 25만까지 들어올 수 있고, board[][] 이중 순회 시 10^6 이다. 최초 시도 때 skill에 대해 1번 순회하는 로직 안에서 호출한 함수가 내부적으로 2중 for문을 돌고 있기 때문에 3중 for문을..
⬛ 프로그래머스 (카카오) | LV.2 주차 요금 계산 (RE) - 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚 문제 접근 방식 주의할 점은 입차는 있고, 출차는 없을 때 23:59 출차로 대체해야 하는 부분이다. 1) records[] 로 들어오는 배열 순회하며 time은 getTime으로 분 시간 교환 carNum 은 식별자로서 HashMap의 key에 세팅 inOut은 입차/출차 정보 구분용으로 (입차는 음수..
⬛ 프로그래머스 | LV.1 둘만의 암호 - 문자열 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 규칙 대로 구현하면 되는 문제였다. s의 각 알파벳 idx 만큼 뒤의 알파벳으로 바꿀 것 idx만큼 뒤의 알파벳이 z를 넘길 경우 (순환구조처럼) a로 돌아가서 철 skip에 있는 알파벳은 건너뛸 것 [문제 풀이] String alpha 에 a~z까지 문자 중 skip 에 포함되는 문자는 건너뛰고 담아준..
⬛ 프로그래머스 | LV.3 110 옮기기 - 문자열 구현 & Stack 활용 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/77886 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 기존 String에 존재하는 “110”을 임의의 위치에 삽입해서 가장 사전 순 앞순으로 만들 수 있는 String을 만들어 반환하는 문제이다. 예시로 하나씩 해보면 0이 더 앞으로 갈수록 가장 사전 앞순인 것을 알 수 있다. 즉 마지막 0 뒤에 110을 삽입해야 한다. 1차 시도 “1..
⬛ 프로그래머스(위클리) | LV.2 교점에 별 만들기 - 구현 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/87377 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 주어진 직선 정보와 두 직선의 교점 구하는 공식을 활용해서 모든 두 직선 간의 교점을 차례로 구하되, 그 중 (정수로 표현되는) 교점에 한해서 담고, 끝없이 펼쳐진 좌표평면 중 교점을 표현할 정도의 크기로만 잘라서 출력하라는 문제였다. [주의] long 타입으로 선언한 이유는 A, B, C 각각 (..
⬛ 프로그래머스 | LV.2 혼자 놀기의 달인 - DFS 문풀 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💚문제 접근 방식 솔직히 문제만 읽었을 때는 도대체 뭔 말하는 건지 도통 이해가 안됐다 .. 1) 차례대로 (방문 X) 상자 선택해서 상자에 담긴 카드 번호가 다음 상자 번호가 되는 방식으로 DFS를 계속 깊이 탐색 2) 결과적으로 계속 타고 타고 현재 카드에 대한 다음 상자를 선택했을 때 이미 방문한 상자라면 탐색을 종..