코테에서 자주쓰이는 Swift 코드 모음집
문제 링크알고리즘 지식은 크게 필요없는 문제였다.문자열 파싱하고 분리 그리고 딕셔너리만 잘 사용하면 무난한 문제고차함수 이용하면 더 코드 짧게 만들 수 있을 듯
문제 링크각 시간 끝쪽만 체크하면 된다는게 포인트.로직을 어떻게 짤지보다 밀리세컨드 변환을 어떻게할지를 더 고민한 듯 하다... (본인은 DateFormatter로 변환했는데 다풀고 남들 코드들 보니 나만빼고 다들 밀리세컨드로 직접 변환...)레벨3인데 생각보다 쉬웠던
문제 링크코드만보면 엄청 단순해보이지만 문제를 보면 엄청 난해하다.최대공약수를 이용한 풀이라고 누가 생각할까... (본인도 혼자서 끙끙앓다가 질문게시판 쪽 내용을보고 최대공약수를 이용해서 풀게되었다.)문제에 예제가 더 있었더라면 좋았을 아쉬운 문제
문제 링크JobManager 클래스 작성하여 기능 구현 후 간편하게 풀이했다.기본적인 배열 접근법만 잘 구상하면 풀기 쉬웠던 문제
코테에서 자주 쓰이는 Swift 알고리즘들을 정리해보았습니다.
문제 링크레벨이 3인데 지문이 엄청 짧네? 꿀빨자!... 라고 잠시 생각했던 문제였다.곰곰히 생각해도 풀 방법이 떠오르지 않았고 지문을 찬찬히 다시 읽어봤더니 체크할 값이 8 이하..?!코테에서 8이란 엄청 작은 숫자 아닌가? 이거 모조리 싹다 체크하면 되겠구나! 해서
문제 링크지문을 읽자마자 바로 어떻게 풀어야할지 머리속에서 그려진 문제.하도 BFS DFS를 사용해보다 보니 10분컷 해버렸다.깊이 넓이 우선탐색 관련 문제 중 가장 기본적인 문제 아닌가 싶다.
문제 링크입국심사를 기다리는 사람은 1명 이상 1,000,000,000명 이하입니다.각 심사관이 한 명을 심사하는데 걸리는 시간은 1분 이상 1,000,000,000분 이하입니다.심사관은 1명 이상 100,000명 이하입니다.보다시피 지문부터가 어마어마한 숫자이다...
문제 링크'가장 먼 노드를 찾으시오' 라는 지문을 읽자마자 바로 디익스트라 알고리즘을 사용할 때구나라는게 번뜩였다.처음 디익스트라 알고리즘을 구현할 때 우선순위 큐를 사용하지 않은 간소화(야매) 방식을 사용하여 풀었는데 테스트 케이스의 반이 시간초과로 실패되었다.우선순
문제 링크처음에는 큐를 사용하지 않고 풀었는데 복잡도에서 실패가 후두두둑...removeFirst 함수를 쓰지않고 pop만 되는 기본적인 큐를 구현한 후 어렵지 않게 풀었다.(Swift는 왜 큐가 기본적으로 없는지 참...222)
문제 링크머리속에 행렬을 이미지하고 어떻게 처리할지 상상하는 능력이 필요한 문제.구상하여 문제를 풀던 도중 2중 반복문이 들어가서 복잡도에서 실패날까 조마조마했지만 다행히 시간 복잡도를 요구하는 문제는 아니었다. (복잡도 최적화하라고해도 못할거 같긴하다ㅋㅋ)
문제 링크스트링 파싱과 배열 정렬, 탐욕법 등 코딩 테스트에 필요한 기본 역량을 고루고루 사용해야했던 문제. 디버딩을 사용 못해서 함참 해맸다.중간중간 값을 보면서 풀었으면 더 쉽게 해결됐을텐데 매번 print 찍어서 실행결과 기다리느라 애먹었다;;
문제 링크문제 지문이 쓰레기 좀 구려서 애먹었던 문제.괄호 이쁘게 맞추는 단순한 문제인데 지문에 나온 괴상한 로직을 무조건 따라해야한다.문제는 지문의 로직이 대부분 생각하지 못하는 괴상한 로직이라는 것.지문 꼼꼼히 안 읽으면 백퍼 실패한다.
문제 링크배열로 교집합 합집합 구하기 문제.특별히 어려울 건 없었다. 지문에서 설명이 부족한 부분이 있었지만...
문제 링크라인수 126... 지금까지 코테 푼것중에 제일 코드를 많이 짜지 않았나 생각든다.깊이/넓이 우선탐색을 써서 풀어야할 문제인데 본인은 문제 특성상 넓이 우선탐색을 사용하였다.(거처온 경로에 대해서 체크할 필요도 없고 특정 노드를 거치면 그 이후것을 탐색할 필요
문제 링크사칙연산하지말고 연산자 우선순위 배치해서 제일 최대값 나오는 경우를 찾아내는 문제.문자열 인자값 파싱하는 방법으로 Scanner를 이용해보았다.지문도 단번에 이해가고 깔끔하고 괜찮았던 문제.
문제 링크풀었지만 아직도 지문이 무슨 내용인지 이해 안가는 문제."응? 뭘 이야기하고 싶은거지? 이렇게 풀면 될까? 어? 이게 통과라고?"이런식으로 풀어져버렸다...딱히 알고리즘도 필요한 문제도 아니고...비추천 문제
문제 링크그래프에 대한 이해도가 요구되는 문제.코드가 상당히 길어졌지만 머리속에 그래프를 그려놓고 이동되는걸 상상하면서 차근차근 풀었다.아직 따끈따끈한 문제인지 몰라도 프로그래머스 다른사람의 풀이에서 Swift 부분 21번째로 올려졌다!내가 전체 Swift 개발자 중에
문제 링크스택과 큐를 이용한 문제Swift에 큐가 없어서 원래는 따로 구현해야하지만 문제 지문 조건상 복잡도를 요구하는 문제가 아니여서 Array의 insert/append로 구현하였습니다.딱히 어려울건 없었던 문제.
문제 링크힙을 이용해서 풀어야하는 문제.Swift에 힙이 없기에 만약 다른 언어랑 같이 경쟁 해야하는 테스트라면 많이 억울할 거 같다. (예를 들어 파이썬...)공부했었던 힙을 구상하며 다른 힙 예제들 안보고 직접 만들고 푸는터라 자꾸 오류가 생겨서 고생했었다.힙만 잘
문제 링크정렬 방식에 대해서만 깊이 고민하면 되는 문제.본인은 우선순위큐를 써서 풀었지만 그럴 필요는 없다...enqueue/dequeue를 반복해서 할 필요가 없고 딱 한번만 전체 정렬시키면 되기 때문에 큐까지 쓰면서 코드 길게 할 필요는 없다.다 풀고 다른 사람 풀
완전탐색 후 가능한 소수 값들을 전부 찾는 문제.재귀로 조합 가능한 경우의 수를 전부 찾았고 Set으로 겹치는 값들을 뺀 나머지 결과값들을 도출했다.딱히 복잡할 건 없었던 문제.
아스키코드로 변경하고 비교하는 그런 부분은 아무것도 아니다...조이스틱을 왼쪽 오른쪽 이동을 최소화하는 방법을 찾는게 관건인 문제.처음에는 조이스틱 앞으로 갔다 뒤로가는 경우만 생각해서 풀다가 아니라는걸 깨닫고그 반대의 경우도 코드로 짜느라 코드 양이 상당히
문제 링크지문 설명에 맞춰 그래프 모델을 만든다음 BFS로 탐색해보았다.꼬인 지문도 없었고 푸는 재미도 있었던 괜찮은 문제!
링크2중 BFS로 해결해보았습니다.(강한 남자들 BFS로 전부 탐색 후, 약한 남자들도 BFS로 전부 탐색)해결 방법만 알면 쉬운데 그 해결 방법을 고민하느라 시간이 오래 걸렸던 문제.
꿀빨았던 문제.일단 재귀로 풀어야겠다고 생각이 먼저 들었고머리속으로 토너먼트 대진표 구상하면서 후다닥 풀어버렸다.
굉장히 지문이 불친절했던 문제.직접 풀어봤던 분들은 모두 한번씩 삽질을 경험해봤을 듯 하다.복잡하게 들어가면 오히려 낭패를 본다.그래프 구조로 노드를 구성한 후 부모마다 세금징수하게하면 된다.DFS니 후순위 정렬이니 그런거 생각하지말고 간단히 가는게 답인 문제
처음 지문을 읽었을 때 너무나도 쉽지 않나? 생각들었던 문제.그저 파싱하고 값뽑아내서 나열하면 그만인 문제 아닌가? 라는 가벼운 생각이 들었지만 오만이었다.정확성 테스트는 다 통과했지만 효율성 테스트에서 전부다 탈락.이걸 어떻게 효율성을 높일 수 있을까 고민했
문제를 어떻게 풀지 구상은 금방 마쳤지만 머리속으로 키와 락이 2차원배열로 어떻게 끼워맞춰질지 코드로 짜느라 힘들었던 문제.반복문을 엄청타서 복잡도에서 문제가 생길까 조마조마했지만 다행히 복잡도까지 요구하는 문제는 아니었다.
생각보다 고전한 문제.유일성을 가지는 모든 경우의 수는 재귀를 통해 전부 탐색했고최소성을 체크는 하나하나 씩 순대서로 지울 컬럼들을 모두 탐색한 후한 번에 촤르르륵 지웠다. (루프문 도중에 지울 수가 없기 때문)별거 아닌 문제였는데 오늘따라 머리가 안돌아갔나.
레벨에 비해서 쉬웠던 문제.시간 기준으로 처리량 체크하는 코딩테스트 단골 문제 형식이었다.딱히 알고리즘이나 특이한 예외 생각할 것 없이그냥 풀면 되는 문제.
시간 복잡도 실패 해결하느라 고생했던 문제.처음에는 Array로 간단 명료하게 풀었습니다.하지만 시간 복잡도에서 우르르르 실패를 격고 해결방안을 고민했습니다.첫번째로는 cmd 반복문에서 매번 문자열을 파싱하고 비교하느라 오래걸리는게 아닌가해서 enum으로 교채