본문 바로가기

프로그래머스 풀이/Lv 3

(44)
2018 KAKAO BLIND RECRUITMENT[1차] 셔틀버스 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문자열로 표현된 시간을 계산하는 것이 조금까다로웠던 문제 오히려 자바로 풀이했다면 조금 더 쉬웠을 것 같다. 알고리즘은 다음과 같다. 1. 크루들이 도착하는 시간을 정렬한다.2.가장 처음 버스 시간대인 9:00 부터 크루들이 도착하는 시간과 비교한다. 2-1. 만약 지금 버스 시간대보다 일찍 왔다면 레디큐에 넣는다.  2-2. 레디큐의 크기가 버스의 최대 승객이라면 레디큐를 비우고 다음 시간대의 버스..
프로그래머스 - 기지국 설치(C++) https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 이분탐색을 의심했다. 새로 설치할 기지국의 개수를 정해놓고 체크하는 방식의 문제가 백준에 존재하기 때문이다. 그렇게도 할 수는 있지만 이 문제의 n은 무려 2억으로 반드시 O(N) 이하로 처리해야 정답이다.  이 문제의 핵심은 저 회색칸을 배열로 만드는 것이다. 그리고 그 회색칸을 주어진 기지국이 커버할 수 있는 값을 계산하면 된다. 2 * w + 1 이 하나의 기지국이 커버할 수 있는 범위..
프래그래머스 - 오랜 기간 보호한 동물(1)(SQL) https://school.programmers.co.kr/learn/courses/30/lessons/59044 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr JOIN 으로 분류되어 있지만 여집합을 구하는 문제와 같다. 여러 개의 컬럼에서 존재하지 않는 것을 골라내고 싶을 때 NOT IN 구문을 사용할 수 있다.반대로 존재하는 것을 골라내고 싶으면 IN 구문을 사용할 수 있다. -- 코드를 입력하세요SELECT NAME, DATETIME FROM ANIMAL_INSWHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID ..
카테고리 별 도서 판매량 집계하기 - SQL https://school.programmers.co.kr/learn/courses/30/lessons/144855 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 두 테이블에서 각각 요소를 가져와야할 경우의 문제이다. 먼저 SQL의 처리 순서를 기억하자  FROM: 데이터를 조회할 테이블이나 뷰를 결정하고, 필요하면 조인(join)이나 서브쿼리를 통해 데이터를 결합합니다.WHERE: 필터링 작업이 이 단계에서 이루어집니다. 주어진 조건에 맞는 행만을 선택합니다.GROUP BY: 데이터가 그룹화되는 단계입니다. 같은 값을 가진 행들을 그룹으로 묶습니다.HAVI..
조건별로 분류하여 주문상태 출력하기 - SQL https://school.programmers.co.kr/learn/courses/30/lessons/131113 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr SQL 코딩테스트를 대비해서 SQL도 풀려고한다. 진작했어야하는데 대체 뭐했지? 지난날의 대한 후회는 접어두고 지금부터 열심히 하도록 하자. 이 문제는 출력해야할 열을 SELECT 하는것이 아니라 조건에 따른 열 값을 넣어야한다. 어떻게 해야할지 몰라서 찾아보니 CASE를 사용하면 된다고 한다. CASE 구문은 보통 SELECT에 사용되며 WHERE에도 사용할 수 있다. 이 문제는 CASE 구문만 ..
프로그래머스 - 파괴되지 않은 건물(C++, 누적합 응용) https://school.programmers.co.kr/learn/courses/30/lessons/92344?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 오늘 현대 오토에버 코딩테스트를 봤는데 누적합을 통해 지정 범위의 숫자들이 몇번 사용되었는지 확인해야하는 문제가 나왔다.누적합을 사용하면 효율적으로 풀 수 있는 문제였지만 난 생각해내지 못했다.. 아이디어는 다음과 같다. [1~ 7][3~8][4~9]  1~10각 자릿수가 아래 범위에 몇번 들었는지 확인하려고 한다. 그렇다면 가장 쉬운 방법은 각 숫자들을 범위와 대조하면 된다 ..
프로그래머스 - N으로 표현 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정말 수준높은 DP문제라고 생각한다. 동적계획법은 언제나 어렵고 나를 힘들게한다.. 먼저 이 문제 분류를 통해 동적계획법을 알고 들어가긴 했지만 DP를 써야하는 이유는 역시나 이전의 값을 다시 재사용하게 된다는 점이다. 처음 접근할 때 DP[1]~ DP[32001] 를 각 N이 만들 수 있는 점화식을 구하여 보려 했으나 44퍼센트에서 틀렸다.. 아주 어림없는 도전은 아니었다고 생각하는데 아쉽다. ..
프로그래머스 - 단어 변환 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr dfs/bfs 문제라는 것을 확인했기 때문에 쉽게 풀 수 있었다. 난 bfs방식을 택했다. 중요한 것은 하나의 단어에 도달하면 다른 단어들은 이 단어에 도달할 수 있어도 할 필요가 없음을 인지해야한다. 만약 지금 이 단어에 도달했는데, 다음으로 이 단어에 도달한다는 것은 결국 최단거리가 아니라는 의미이기 때문이다. 그러므로 방문표시를 하고 bfs 탐색을 하면 문제는 풀린다. 이 문제가 레벨3인 이..