250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 내일배움캠프
- 태블로
- SQL
- 내배캠_학습기록
- 내일배움일지
- 리스트
- 다중공선성
- 한줄for문
- SQLD
- DATE_SUB
- ★
- map
- 아티클스터디
- Join
- 시각화
- 반복문
- 가설검정
- 이중for문
- f-string
- 선형회귀
- Leetcode
- 데이터시각화
- Set
- 통계학
- AB테스트
- python
- Max
- Til
- 데이터전처리
Archives
- Today
- Total
노력에는 지름길이 없으니까요
LeetCode - 626. Exchange Seats 본문
728x90
해결일 | 언어 | 레벨 | 테스트명 |
20240816 | SQL | medium | 626. Exchange Seats |
링크 : https://leetcode.com/problems/exchange-seats/description/
내 코드
-- 1) 전체 레코드 수가 홀수일 때 마지막 데이터는 바꾸지 않아도 됨
-- -> id가 레코드 개수와 같을 때
-- 2) id가 홀수일 때 +1, id가 짝수일 때 -1 에 있는 데이터 출력
-- SELECT
-- CASE
-- WHEN MOD(id,2)=0 THEN id-1
-- WHEN ((MOD(id,2)=1) AND (id+1 != MAX(id))) THEN id+1
-- ELSE id END id
-- ,student
-- FROM Seat
-- ORDER BY id asc
-- 처음에 실수한 코드
SELECT
CASE
WHEN MOD(id, 2) = 1 AND id + 1 <= (SELECT MAX(id) FROM Seat)
THEN id + 1
WHEN MOD(id, 2) = 0
THEN id - 1
ELSE id
END AS id
,student
FROM Seat
ORDER BY id asc
주의해야 할 점이 늘어나는 것이 난이도와 관련이 있는 듯 하다.
고려해야 할 점이 두 개 있었는데,
1) 전체 레코드 수가 홀수일 때 마지막 데이터는 바꾸지 않아도 됨 -> id가 레코드 개수와 같을 때
2) id가 홀수일 때 +1, id가 짝수일 때 -1 에 있는 데이터 출력
홀수 짝수에 해당하는 when문을 기재하되, 마지막 레코드에 대해서는 처리를 하지 않도록 조건을 나누었다.
개선점:
MAX의 사용법을 또 간과하고 있다가 튜터님께 질문해서 풀어냈다...
추가로 받은 힌트
- 변한 것이 student 즉 문자열처럼 보이지만, id를 바꾸어도 상관없다.
그리고 숫자를 사용할 때 더 간편하게 풀 수 있는 방법이 많다. (max 사용 등... 함수 대응이 간편해짐)
728x90
반응형
'SQL > LeetCode' 카테고리의 다른 글
LeetCode - 1141. User Activity for the Past 30 Days I (0) | 2024.08.14 |
---|---|
(★) LeetCode - 1789. Primary Department for Each Employee (0) | 2024.08.12 |
LeetCode - 178. Rank Scores (0) | 2024.08.12 |
LeetCode - 181. Employees Earning More Than Their Managers (0) | 2024.08.09 |
LeetCode - 182. Duplicate Emails (0) | 2024.08.09 |