코딩테스트 17

프로그래머스 비밀지도 문제 풀이 - [세무민의 코딩일기]

안녕하세요 세기무민입니다. 이번에 풀어볼 문제는 2018년도 카카오 블라인드 테스트 1차 비밀지도 문제입니다. 문제 설명 입출력 및 예시 문제 풀이 이번 문제는 위의 설명대로 문제를 접근하면 됩니다. 요약을 하자면 1. 2진수로 변환하기 2. 2진수로 변환한 수의 자리수를 맞춰주기 3. 2진수로 변환한 값들을 비교 및 #으로 출력 arr1과 arr2의 값들을 2진수로 변환해서 두개를 합쳤을 때 1인 경우에 #으로 표시해주면 됩니다. 여기서 2진수로 변환하는 방법이 여러가지가 있지만 저는 format을 이용하였습니다. 2진수로 변환을 완료했다면 다음으로 확인할 것은 해당 배열의 자리수와 일치하는지 확인이 필요하고 만약 자리수가 다르면 자리수를 맞춰주면 됩니다. 마지막으로 자리수를 맞췄다면 해당 값들을 비교..

[세무민의 코딩일기] LeetCode Trips and Users 문제풀이

오늘 포스팅 할 내용은 LeetCode에서 Trips and Users문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 driver_id와 client_id만 잘 구분해주면 된다. 말 그대로 cancel의 확률을 구하면 되는데 사용자 중 banned가 yes라면 제외한 확률을 구해주면 된다. 그래서 날짜별로 평균값을 구해주면 되는 문제이다. /** * LeetCode : Trips and Users * URL :https://leetcode.com/problems/trips-and-users/ */ /* * AVG 사용 */ select trip_totals.day, ,round(avg(trip_totals.status like '%cancel%'), 2) as "Canc..

Algorithm/leetCode 2022.01.17

[세무민의 코딩일기] LeetCode Rising Temperature문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Rising Temperature문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 전일 대비 온도가 높은 ID를 출력해주면 됩니다. 그렇다면 해당 문제를 접근한는 방법은 현재일과 현재일에서 DATE_ADD를 통해 1일을 추가한 일자와 비교하여 온도를 비교해주면 된다. 또 다른 방법은 DATEDIFF를 이용하여 날짜의 차이가 1일인 경우 온도를 비교해주면 된다. /** * LeetCode : Rising Temperature * URL : https://leetcode.com/problems/rising-temperature/ */ # DATEDIFF를 통해 날짜의 차이를 구하는 방식 select w1.id from W..

Algorithm/leetCode 2022.01.13

[세무민의 코딩일기] LeetCode Duplicate Emails 문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Duplicate Emails문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 이메일 중복이 존재한다면 해당 중복 이메일을 출력해주면 되는 문제입니다. 이 문제에서는 가장 쉽게 할 수 있는건 이메일로 Group by를 한 뒤 1개 이상인 이메일을 출력해주면 됩니다. 다른 방법으로는 서브쿼리에서 email의 count를 구하여 1개 이상의 값을 구하면 됩니다. # 서브 쿼리 사용 select duals.email as Email from ( SELECT id, email, count(email) as numEmail from Person group by email ) as duals where duals.numEmail..

Algorithm/leetCode 2022.01.11

[세무민의 코딩일기] LeetCode Second Highest Salary 문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Second Highest Salary 문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 말 그대로 2번째로 급여가 높은 사용자의 급여를 출력하면 되며 만약에 2번째로 높은 급여가 없는 경우 Null을 출력하면 된다. 위의 경우를 가장 쉽게 생각해보면 가장 Max의 값을 제외한 값이 2번째의 값이다. 따라서 Max인 값을 제외하고 가장 첫번째의 값을 출력하면 된다. # Time : 482ms SELECT max(salary) as SecondHighestSalary FROM Employee where not salary = (select max(salary) from Employee) # Time : 735ms SEL..

Algorithm/leetCode 2022.01.09