알고리즘/문제풀이

[프로그래머스][없어진 기록찾기] SQL - JOIN

Dibrary 2022. 8. 8. 09:50
반응형

안녕하세요 Dibrary입니다.

이번엔 간단한 JOIN문제인데, 어문데서 시간을 꽤나 허비했던 문제를 정리해보겠습니다.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


이 문제는 JOIN 카테고리에 있는 문제라서 JOIN을 써야 하는 것을 알 수도 있지만,

문제의 내용을 보고도 JOIN을 써야 함을 알 수 있습니다.

 

이 문제를 보고 제일 먼저 든 생각은, 

  1. 한쪽엔 있고, 한 쪽엔 없는 것을 '구분' 해야 하고
  2. 그 중에 없는 것을 뽑아다가 보여줘야 한다.

입니다.

 

저는 먼저 문제를 파악해보는데 중점을 뒀었습니다. 

예를 들면, 데이터가 몇 개고, 같은 데이터는 몇 개인지.

우선 ANIMAL_INS, ANIMAL_OUTS 두 테이블 모두 데이터는 100 row로 구성되었습니다.

그리고 ANIMAL_ID가 같은 것의 갯수를 확인해 보았습니다.

오, 그러니까 총 100개 중에 96개는 같다고 하니, 4개는 짝이 안 맞는 것이고, "JOIN을 써서 구하고자 하는 것은 4개의 row데이터구나~" 는 것을 알 수 있습니다.

 

먼저 답부터 공개해 보자면, 아래와 같습니다.

저는 OUTS를 오른쪽에 뒀고, 왼쪽에 빈 칸으로 나오는 것을 추린 후에 ANIMAL_ID, NAME을 나타나게 했죠.

 


여기서, 제가 시간을 꽤 날렸던 부분은 ANIMAL_ID, NAME을 출력할 때, ANIMAL_OUTS로 해야 한다는 겁니다.

그것도 모르고 저는 ins.ANIMAL_ID, ins.NAME 이렇게 했더니 아예 아무것도 안나오는게 아니겠어요?

 

출력을 할 때는 반드시 모든 데이터가 있는 테이블을 이용해서 지정해야 한다는 것을 알게 되었습니다.

728x90
반응형

'알고리즘 > 문제풀이' 카테고리의 다른 글

소수 구하는 방법  (0) 2022.08.11
[프로그래머스][최소직사각형] - 그리디 문제  (0) 2022.08.09
[BOJ][2343번] 기타 레슨  (0) 2022.08.04
[BOJ][14502번] 연구소  (0) 2022.08.02
[BOJ][1931번] 회의실 배정  (0) 2022.07.26