오랜만에 알고리즘 문제 풀이 올려봅니다.
코딩에 관심이 가신다면 살펴보셔도 좋으나 그렇지 않다면 슬며시 끝으로 가셔도 좋습니다 ㅎㅎ

이번 COS PRO 1급에 출제되었던 시험중 제가 틀린 어려운 1문제는
응시시간 계속 고심하느라 대략적인 문제 패턴을 기억하고 있는데요.
아 글쎼 제미나이(유료구독 PRO모드) AI에게 물어보니 순식간에 풀어주는 겁니다.
제미나이 3.0이 똑똑해졌다더니 코딩 부분도 과장이 아니었네요.
지문은 원래 헷갈리게 하느라 길지만 핵심만 추리면 문제 유형은 이렇습니다.
아래와 같은 패턴의 문자열 리스트가 주어졌을 때, ( 실제 시험문제와는 데이터는 다릅니다 )
[ 'A100', 'B2341', 'A976', 'B41', 'A543' ]
첫글자는 알파벳 기준으로 오름차순,
나머지는 큰 숫자 기준으로 내림차순 정렬하는 건데요.
아래와 같은 결과가 나와야 하는 거지요.
물론 어떠한 패턴이 리스트가 등장해도 같은 규칙으로 문제가 풀이되도록 기능을 고치는 겁니다.
['A976', 'A543', 'A100', 'B2341', 'B41' ]
여러줄로 작성하는 완성형 문제로 이 방식이 출제되었으면 차라리 쉬웠을텐데요.
빈칸 채우기 문제로 한줄, 그 칸에 맞게 넣어야 되도록 출제가 된 겁니다.
한줄에 lambda 식을 이용해서 나머지를 채우는 제약 조건이 붙은 채로 말이지요.
제미나이가 준 답변은 아래와 같습니다.
arr = [ 'A100', 'B2341', 'A976', 'B41', 'A543' ]
arr.sort(key=lambda x:(x[0], -int(x[1:])))
print(arr)
음? 해결방법이 너무 단순하잖아?.. 문제가 정상적으로 풀리더군요.
이 짧은 코드에는 꽤 많은 의미가 함축되어 있습니다.
요는 람다식 x 의 정렬 조건을 1차 소트와 2차 소트 2개로 나누어 수행할 수 있다는 건데요.
lambda x:(첫번째 정렬 조건, 두번째 정렬 조건)
이 사실은 이번에 처음 알았습니다.
하지만 그 사실을 안다 하더라도 한번이라도 동일 패턴 문제를 풀어봤다면 모를까
그렇지 않다면 쉬운 문제가 아닙니다.
lambda 정렬에서 첫번째 조건과 두번째 조건은 정렬 순서를 각각 다르게 지정할 수는 없게 되어 있거든요.
그런데 첫번째 조건에는 x[0]을, 두번째 조건에는 -int(x[1:])를 사용했습니다.
x[0] 에서 0은 첫번째 글자를 의미합니다.
그리고 x[1:]은 두번째 글자부터 끝까지를 의미하는데요.
위에서 -int(x[1:]) 는 두번째 조건을 숫자로 바꾼 다음 음수로 만들어 버리는 겁니다.
이른바 역발상적인 부분이지요.
음수로 바꾼다면 첫글자와 나머지 부분 모두 오름차순 정렬해도 문제의 조건에 부합하는 것이지요.
원리를 알고 나서 이른바 IT계의 '멘사퀴즈'같은 느낌을 받았습니다.
방법을 알고나면 쉬운데 알기 전까지는 매우 어려운 퀴즈같은 거지요 ㅎㅎ하지만 나머지 문제는 비교적 쉬웠기 때문에 실무 개발자라면 패스하는 데 문제는 없었을 수준이었습니다.
1번 문제는 아마도 출제자분이 좀 더 공부를 열심히 하라는 의미로 내주신게 아닐까 생각해봅니다^^
코딩에 관심 있는 분께 약간의 흥미로운 주제가 되셨기를,
그게 아닌 안부차 오신 분들께도 감사드립니다!
갑자기 추워진 날씨, 건강하세요!
'코딩과 알고리즘' 카테고리의 다른 글
| 오늘 있었던 COS PRO 1급 파이썬 시험 (30) | 2025.12.20 |
|---|---|
| 다음 자격증 도전, COS PRO 1급! (40) | 2025.12.14 |
| 아주 심플한 PHP 구글/페북 인증 ( 바이브코딩으로 겟! ) (30) | 2025.12.13 |
| chatgpt로 SQLD 시험 준비 꿀팁 (23) | 2025.10.29 |
| 슬로우 쿼리 조사 Shell 스크립트 (46) | 2025.07.30 |