Weather Observation Station 8

Query the list of CITY names from STATION which have vowels (i.e., a, e, i, o, and u) as both their first and last characters. Your result cannot contain duplicates.

  • 내 풀이
SELECT distinct CITY 
FROM STATION
WHERE substr(CITY,1,1) IN ('a','e','i','o','u') AND
substr(CITY,length(CITY),length(CITY))IN ('a','e','i','o','u')

substr() 함수를 알고 있으면 수월하게 풀 수 있는 문제였다.

  • 다른 사람 풀이
select distinct city from station 
where left(city,1) in ('a','e','i','o','u') 
and right(city, 1) in ('a','e','i','o','u')

가독성이 더 좋다고 느껴졌고, LEFT(), RIGHT()라는 함수를 알게되었다.

Weather Observation Station 9

Query the list of CITY names from STATION that do not start with vowels. Your result cannot contain duplicates.

  • 내 풀이
SELECT distinct CITY 
FROM STATION
WHERE left(CITY,1) NOT IN ('a','e','i','o','u')

위에서 알게된 left() 함수를 활용하여 NOT IN 조건을 걸어주었다.

  • 다른 사람 풀이
SELECT DISTINCT CITY FROM STATION
WHERE CITY REGEXP '^[^aeiou]';

정규식을 활용하면 더 짧게 코딩이 가능하다.

Weather Observation Station 10

Query the list of CITY names from STATION that do not end with vowels. Your result cannot contain duplicates.

  • 내 풀이
SELECT distinct CITY
FROM STATION
WHERE right(CITY,1) NOT IN ('a','e','i','o','u')

위의 문제와 거의 동일하여서 어렵지 않았다.

  • 다른 사람 풀이
select DISTINCT city from STATION where city NOT REGEXP '[aeiou]$'

정규식을 활용한 풀이가 자주 보인다.

Weather Observation Station 11

Query the list of CITY names from STATION that either do not start with vowels or do not end with vowels. Your result cannot contain duplicates.

  • 내 풀이
SELECT distinct CITY 
FROM STATION
WHERE NOT regexp_like(CITY, '^a|^e|^i|^o|^u')
OR NOT regexp_like(CITY, 'a$|e$|i$|o$|u$')

정규식을 이용한 풀이가 많이 보이길래 나도 사용해보았다. regexp_like() 함수를 사용했다. 위의 코드에서 처럼 likein을 동시에 사용하고 싶을 경우에 regexp_like() 함수를 통해 구현 가능하다.

  • 다른 사람 풀이
SELECT DISTINCT CITY FROM STATION
WHERE CITY REGEXP '^[^aeiou]|[^aeiou]$';

간결하게 잘 작성한 코드라고 생각한다. 정규식 안에서 OR에 해당하는 조건을 걸어준 것이 인상적이다.

Weather Observation Station 12

Query the list of CITY names from STATION that do not start with vowels and do not end with vowels. Your result cannot contain duplicates.

  • 내 풀이
SELECT distinct CITY
FROM STATION
WHERE CITY regexp '^[^aeiou]' and CITY regexp '[^aeiou]$';

이번에도 정규식을 이용하여 풀었다. 나중에 더 복잡한 규칙이 나오면 정규 표현식을 잘 정리해놓은 글을 참고해야겠다.

  • 다른 사람 풀이
SELECT DISTINCT CITY FROM STATION WHERE CITY REGEXP '^[^aeiou].*[^aeiou]$';

원래 내가 작성하고 싶었던 코드라고 생각한다. AND를 사용하지 않고 정규식 하나로 표현하고 싶었는데 위의 코드는 하나로 표현이 가능했던 것 같다.

비슷한 문제의 반복 때문에 이용자들은 진절머리가 난 것 같다(?).

+ Recent posts