문제풀이에서 XOR 연산과 관련한 흥미로운 내용이 있어 찾아보았습니다. XOR연산이란?논리연산으로 둘이 다른 값을 가질때 true, 같은 값을 가질때 false를 가집니다.ABA xor B000011101110 컴퓨터에서 XOR연산을 한다는 것은 두 데이터의 비트(bit)들 중 서로 일치하지 않는 것들의 모임이라고 할 수 있습니다. 따라서 같은 숫자를 XOR연산하게 되면 모든 비트들이 일치하기 때문에 0이 나오게 됩니다.333 ^ 3001100110000이런 특성을 이용해 다음과 같은 문제를 해결할 수 있습니다. N개의 정수가 주어질 때 딱 한개의 숫자만 한번 나타나고 나머지는 두번씩 나타난다고 가정할 때, 한번만 나타나는 숫자를 구한다. 이 문제를 Set이나 Map같은 자료구조를 이용해 풀고자 할 경우..
문제 개요 3개 이상 연속되는 값들의 집합을 구하는 문제입니다. 문제 접근 3개의 접근자를 지정해 값이 같을 때의 값들을 가져옵니다. FROM에서 여러개를 지정할 수 있다는 것을 알았습니다. 코드 SELECT DISTINCT l1.num as `ConsecutiveNums` FROM Logs l1, Logs l2, Logs l3 WHERE l1.Id = l2.Id - 1 AND l2.Id = l3.Id - 1 AND l1.Num = l2.Num AND l2.Num = l3.Num ; 문제 https://leetcode.com/problems/consecutive-numbers/
문제 개요 N 번째 높은 봉급을 출력하는 문제입니다. 문제 접근 SQL에서 function을 작성하고 LIMIT OFFSET을 사용하여 해당 위치의 한개의 레코드만을 가져옵니다. 코드 CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN SET N = N-1; RETURN ( SELECT DISTINCT(salary) from Employee order by salary DESC LIMIT 1 OFFSET N ); END 문제 https://leetcode.com/problems/nth-highest-salary/
문제 개요 두 번째로 큰 값을 구하는 문제입니다. 문제 접근 WHERE 절로 가장 큰 값을 제외한 값들 중 가장 큰 값을 가져옵니다. 코드 SELECT MAX(SALARY) AS `SecondHighestSalary` FROM EMPLOYEE WHERE SALARY (SELECT MAX(SALARY) FROM EMPLOYEE); 문제 https://leetcode.com/problems/second-highest-salary/
문제 개요 GROUP BY와 HAVING 사용법을 익히는 문제입니다. 문제 접근 테이블에서 중복된 값을 찾기 위해서는 GROUP BY를 통해 찾을 부분을 그룹으로 만들어주고 HAVING을 이용해 조건을 만들어주면 됩니다. https://jminie.tistory.com/24 위 블로그를 참고하였습니다. 코드 SELECT email FROM Person GROUP BY email HAVING COUNT(email) > 1; 문제 https://leetcode.com/problems/duplicate-emails/
문제 개요 LEFT JOIN 사용방법을 묻는 문제입니다. 문제 접근 SQL을 배우면서 처음 사용해본 LEFT JOIN입니다. ON 뒤의 식을 기준으로 JOIN합니다. 코드 SELECT p.firstName, p.lastName, a.city, a.state FROM Person AS p LEFT JOIN Address AS a ON p.personId = a.personId; 문제 https://leetcode.com/problems/combine-two-tables/
문제 개요 5개의 구역으로 나눈 구역에서 가장 많은 사람과 가장 적은 사람의 차이가 가장 작은 것을 찾는 문제입니다. 문제 접근 문제 자체는 어렵지 않았는데, 구현하는데 있어서 처음보는 유형이라 많이 해맸습니다. 구역별 인원의 합을 구할 때 미리 구해둔 인원 합을 이용해 계산하여 시간을 단축하였습니다. 코드 public class Main { static int N; static int[][] city; static int sum; public static void input() throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(bf.readLine..