이 포스팅은 소마 1차 코테를 보고 약간의 기록을 남기고자 쓴 글입니다.
문제 유출 관해서 규정을 위반하거나 한 경우 삭제하겠습니다.
1차 코테! 오늘 (3월 5일) 2시에서 4시 사이에 봤다.
문제는 알고리즘 6문제, SQL 1문제, 웹 1문제이다. 검색 비허용이고 앨리스라는 플랫폼에서 화면공유 + 노트북 캠 켜놓고 진행.
IDE 사용에 대해서 말이 많아서 (자동완성 기능 꺼야 한다고 함, 저장한 코드는 삭제해야 함) 그냥 앨리스에서 쭉 풀었는데 불편함 없었음.
일단은 다섯문제 풀었다(5솔)고 생각하고, 정확하게 풀었는지는 모르겠음
난이도는 문제 2, 6이 골5~실1 사이이고 나머지는 실버일듯
문자열 검색 문제.
문자열의 일부를 가져오는 함수가 도저히 생각이 안 나는 거ㅠ substr 이렇게 검색하면 나올텐데 뭐였지? 하다가
str에서 list로 변환 -> 앞에서부터 하나씩 가져와서 합침 (심지어 기억 안 나서 for문 돌림)
이런 원시적인 방법을 썼음.
그리고 list to string 하는 방법도 기억이 안 났음. join인 건 알겠는데 이 함수 사용법이 뭐더라....?
그냥 str(list)
하면 ['a', 'b', 'c']
이런 문자열이 등장.
''.join(list)
이렇게 하면 빈 문자열에 list 원소들이 합쳐져서 이쁘게 나옴. 위 예시로는 abc
자료구조 구현. 아마 문제 중에 제일 시간 많이 필요.
못 풀었음... 이것도 얼마전에 dict 초기화 등등 정리했었는데 (...) 기억 안 나고요
특정 함수(산술연산) 을 거쳐서 암호화, 복호화 하는 내용.
조합이 필요해. 그런데 이 역시도 라이브러리 기억 안 나서... O(n^3) 방법으로 풀었는데 아마 itertools.combinations
도 내부적으로 O(n^3)일거라 본다 (결국 결과 자체가 n^3일수밖에 없지 않나?? 내가 모르는 똑똑한 방법이 있을수도)
여러가지 접근 방식을 떠올리게 함. 나이브하게 접근 가능한데 (이 경우, 정렬을 십만번 정도 수행) 왠지 객기 부리려고 좀더 돌아가서 풀었다. 7가지 case에 대해 일일이 계산. 결과적으로 나올 수 있는 방법 중에서 제일 빨랐겠지만.
이진탐색 이용해서 풀 수도 있는 모양인데 그렇게 들어가면 구현할 자신이!! 없습니다. 내 생각엔 같은 복잡도면 힙큐가 더 쉬울듯
힙큐로 들어가려고 생각도 했는데 힙큐 쓰는법도 기억 안 났음;;; 지금 보니까 내가 생각한거가 맞는데 테스트 할 땐 왜 안 됐을까요
import heapq
힙큐 초기화 h = []
힙큐 푸시 heapq.heappush(h, 1)
나... 그래프는 싫어~~!
이런 마음가짐으로 넘겼는데 의외로 무식하게 하면 손댈 수 있었을듯
사이클 없고 방향 없는 그래프 탐색 정도
SQL 문제.
DATETIME 에 대해서 BETWEEN
이라는 게 기억나지 않아서 >=
로 풀었지만 맞은 것 같다.
SQL에 대해서는 다음과 같은 사항을 꼭 유념하자고 시험 전에 기억함.
ORDER BY
제대로 보자css 조작 문제.