728x90
⬛ 프로그래머스 (카카오) | 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 에 포함되는 문자는 건너뛰고 담아준..