[LeetCode]626. Exchange Seats

주연·2023년 5월 9일
0

SQL 문제 풀이

목록 보기
28/28
post-thumbnail

문제

https://leetcode.com/problems/exchange-seats/

순서대로 swap( 1,2 -> 2,1)
홀수일 경우) 마지막 수(id)는 그대로

풀이

  • 나, 틀린 답변
SELECT CASE WHEN MOD(id, 2)= 0 THEN id - 1
        	WHEN MOD(id, 2)= 1 THEN (CASE WHEN MOD(MAX(id), 2)= 0 THEN id
                                          ELSE id + 1 END)
        END AS id
        , student
FROM Seat
ORDER BY id

이렇게 하니까 왜 안될까? MOD(MAX(id) 여기서 이상해지는 것 같은데 왜인지 모르겠다. 이렇게 할 경우 행 1개만 출력됨.

저기가 이상하다고 생각한 이유는

SELECT CASE WHEN MOD(id, 2)= 0 THEN id - 1
        	ELSE id + 1
        END AS id
        , student
FROM Seat
ORDER BY id

홀수 행 고려안하고 했을 때 마지막 가장 큰 id만 틀리고 다른 건 맞음..

  • 나, 맞은 답변
SELECT CASE WHEN id = (SELECT COUNT(*) FROM Seat) AND MOD(id, 2)= 1 THEN id
            WHEN MOD(id, 2)= 1 THEN id + 1
            ELSE id - 1
        END AS id
        , student
FROM Seat
ORDER BY id

그래서 그냥 max 대신 COUNT와 같은 id는 id 값 그대로 출력하게 했더니 된다.

profile
공부 기록

0개의 댓글