240523_TIL

J Lee·2024년 5월 23일

아무리 사소하더라도 배움이 없는 날은 없다.

SQL 코드카타 140번
모음(a,e,i,o,u)으로 시작하고 끝나는 city의 이름을 찾는 문제.
어제에 이어 정규표현식의 응용 문제다.

select distinct city
from station
where city regexp '^(a|e|i|o|u).*(a|e|i|o|u)$'

모음으로 시작하는 것^(a|e|i|o|u)과 끝나는 것(a|e|i|o|u)$의 조건을 적어준 다음 사이에 .*을 넣어주면 된다.

임의의 문자(.)가 0개 이상 반복됨(*)을 나타낸다.


알고리즘 코드카타 49번

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

예를 들어 numbers가 [2,1,3,4,1]로 주어지면 numbers의 모든 2자리 수 조합의 합인 [2,3,4,5,6,7]을 반환해야 한다. (2가 들어가도 되는 이유는 1이 2개 있기 때문.)

<1차 시도>
테스트케이스 통과, 제출 결과 오답(9개 케이스 중 2개 틀림)

def solution(numbers):
    x = []
    for i in range(len(numbers)):
        for j in range(i+1,len(numbers)):
            x.append(numbers[i]+numbers[j])
    answer = list(set(x))
    return answer

알고 보니 배열에 오름차순으로 담아서 return하라는 조건을 빼먹어서 오류가 난 거였다. 어떤 케이스에서는 오름차순 정렬이 지켜지지 않는 경우도 있는 것 같다.

<2차 시도> : 정답

def solution(numbers):
    x = []
    for i in range(len(numbers)):
        for j in range(i+1,len(numbers)):
            x.append(numbers[i]+numbers[j])
    answer = list(set(x))
    return sorted(answer)
profile
기본기를 소홀히 하지 말자

0개의 댓글