코딩테스트 마스터의 길 (1)

백상휘·2023년 3월 29일
0

CodingTest

목록 보기
1/6

"굳이 이렇게까지..." 라는 생각이 들면서도 가장 확실한 자기 어필 수단이라고 생각합니다.

오늘부터 아주 각 잡고 코딩테스트 공부를 시작하기 위해 매일 블로그 게시글을 적어볼까 한다.

이런 결심을 하게 된 것은 아주 작은 사건이 발생시킨 일종의 모멘텀위기의식 때문이라고 할 수 있겠다.

  • AI 의 힘을 빌리면 더 쉽고 빠르게 공부할 수 있겠는데?
  • 이거 준비 안하면 평생 개발자로 취업 못하겠는데?

아주 무시무시한 AI 의 힘

사실 이게 다 했지...

우선 코딩테스트를 하려면 어느 분야가 출제되는지 알아야 한다. 그렇기 때문에 예전에 정리한 Xcode Playground 에서 코드를 노션으로 긁어오면 어디서든 볼 수 있으니 좋지 않을까 생각했다.

그런데 문득 노션에는 AI 에게 뭔가 명령을 해서 대신 컨텐츠를 입력할 수 있다는 사실이 생각났다. 바로 시험해 보았다.

"Write the swift code implementation of Stack Data Structure"

정말 Chat-GPT 도 그렇고 AI 는 너무 신기하다. 10초도 안걸려서 내가 가지고 있던 Stack 자료구조 코드가 그대로 튀어나왔다.

이제 implementation 을 implementations 로 바꾸고 Stack, Queue, LinkedList 이런식으로 계속 나열하니 금방 자료구조 노트를 만들 수 있었다.

이제 자료구조는 했으니 알고리즘 차례다. 알고리즘 출제 범위는 아래의 링크를 참고하였다.

https://www.hanbit.co.kr/channel/series/series_view.html?cms_code=CMS7793635735&hcs_idx=29

이 게시글을 통해 BFS, DFS, Binary Search, Dynamic Programming, Graph Theory 가 필요하다고 판단했다. 그리고 AI 님이 해주셨다.

"Write the swift code implementation of Binary Search"

강력한 한 방이 필요한 서류

지금까지의 경력은 3 파트로 나누면 된다.

  1. 웹 개발 운영 경력 3년 5개월
  2. iOS 신규 프로젝트 프리랜서 7개월
  3. Vue.js 신규 프로젝트 개발 및 운영 6개월

여기서 흔히 말하는 "네카라쿠베 합격한 서류", "개발자 이력서 이렇게만 쓰세요" 등의 내용과 다른 점은 특별한 경험은 없다 인 것 같다.

현재 9개월동안 취업을 못하고 있으며, 서류에서 대부분 불합격 하는 이유를 스스로 자문해보면 딱히 물어볼 만한 것이 없는 경력자 라고 판단이 되어서이지 않을까?

난 운영 경력이 나쁘다고 보는 사람은 아니다. 실제 3년 가까이 해보면서 느낀건 운영 개발자 없으면 신규 개발도 없다는 것이다.

흔히 실력있는 개발자를 신규 프로젝트, 그렇지 않은 개발자를 운영 프로젝트에 각각 나눈다고 생각할 수 있다. 만약 실력없는 개발자만 운영 프로젝트에 남아있다가는 신규 프로젝트 때문에 바쁜 개발자들이 긴급 호출될 수도 있다. 운영이 제대로 돌아가야 신규 프로젝트도 제대로 돌아간다. 뭐 하나가 빠진다고 볼 수는 없다고 생각한다.

즉, 이 문제는 내가 운영 경력이 많아서가 아니라 내 지원서류가 딱히... 라는 생각이 드는 것이 아닐까?

함정에 빠져서 곤란을 겪고 있는 기분이다. 함정에 빠져 허우적 대며 아무것도 하지 못하다가 "정신없이 프로그래밍을 하면 뭔가 답이 나오지 않을까?" 라는 생각에 예전부터 준비하려던 코딩테스트를 정말 각 잡고 준비하고자 한다.

목표는 이거다.

Swift 숙련도 중급. 백준 티어 실버.

원래는 골드로 가야하나 했지만 실버부터 차근차근 노려보기로 했다.

백준을 선택한 이유

개인적으로 코딩테스트 하면 떠오르는 사이트는 세 개다.

  1. 프로그래머스
  2. 백준
  3. Leet Code

많은 분들이 Leet Code 를 추천해주시는 것으로 알고 있다. 하지만 코딩테스트의 목적은 취업이다. 이걸 공부하면서 자료구조 & 알고리즘을 사랑할 수도 있겠지만, 우선 취업하고 나서 사랑하려고 한다. (없는 애들이 이런 말을 많이 하던데...)

백준은 문제집 기능이라고 하여 다른 사용자들이 모아놓은 문제 목록을 공유하고 볼 수 있는 기능이 있다. 백준은 문제가 굉~~~장히 많기 때문에 이런식으로 추천수가 많은 문제들을 열심히 해결해보고자 한다.

결국 개발자를 평생 직업으로 가져가기로 했으니 코너에 몰렸다 생각하고 앞만 보는 수밖에 없다.

시험삼아 한 문제 풀어보기

하는 김에 백준 사용법도 알아볼 겸 간단히 하나 풀어보기로 했다. 쉬운것부터 해보자.

  • 문제번호 = 15059(Hard Choices)

  • 풀이
let readyMeals = readLine()!.split(separator: " ")
    .compactMap({Int($0)})
let preferMealInfo = readLine()!.split(separator: " ")
    .compactMap({Int($0)})

var result = 0

for i in 0..<3 {
    let diff = preferMealInfo[i] - readyMeals[i]
    
    if diff > 0 {
        result += diff
    }
}

print("\(result)")

readLine 이라니? 이거 아주 young 한걸? 완전 MZ 인걸?

profile
plug-compatible programming unit

0개의 댓글