목록알고리즘 (14)
슈프림 블로그
programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 문자열을 두 글자씩 자르기 문자열 쪼개는 데에 시간이 한참 걸렸다...!!!! 미래의 내가 까먹지 않도록 정리하는 내용 더보기 문자열 인덱스로 subscript를 사용하면 -> String이 아니라 Substring 타입이 반환됨!!! Range는 (n...m) 형태 말고, (n..
programmers.co.kr/learn/courses/30/lessons/12946 코딩테스트 연습 - 하노이의 탑 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대 programmers.co.kr 하노이탑은 어렸을 때 부터 무지 좋아하던 놀이이다! 보자마자 규칙은 떠올랐지만, 코드로 바꾸는게 조금은 헷갈렸던 문제...! 재귀함수 연습하기 딱 좋은 문제인 것 같다. 규칙 찾기 일단 규칙을 설명하기 위해 5개의 원판을 옮기는 상황을 가정해보자. 5개의 원판을 1->3으로 옮겨야 한다. 1에 있는 원판 4개를 ->2로 옮겨야 한다. 1에 있는 원판 1..
programmers.co.kr/learn/courses/30/lessons/17686?language=swift 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 문자열들을 특정 조건에 맞게 정렬하는 문제다. 문자열 구성 head: 영문, 공백, 특수문자 ( . - ) 로 이루어짐 number: 숫자로 이루어짐 tail: 사실상 신경쓰지 않아도 되는 부분 정렬 조건은 다음과 같다. head 사전 순 (대소문자 구분 안함) number 오름차순 (문자열이 아닌, 숫자로) 입력 순 정규식 먼저 문자열 ..
programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 코딩테스트 문제를 풀 때 생각보다 시간초과 에러가 많이 발생한다. 아주 특수한 케이스에 대한 처리를 해주지 않아서 틀리는 경우도 있지만, 어마하게 큰 데이터를 입력받아서 발생하는 시간(메모리) 초과 에러도 아주 잦다. 시간 초과 에러가 발생하면 일단 '조금만 시간을 줄이면 되겠지'라는 생각은 접어야한다. 아예 풀이 방법과 알고리즘을 싹 뜯어 고쳐야한다. 모든 경우를 탐색하는 반복문을 줄이고, 새로운 방법으로 접근을 시도해보자. 이 문제도 시간초과 때문에 생각보다 오래 걸렸던 문제였다. 자료구조와 알고리즘 공부의 필요성을 크게 느꼈다... TMI) 그래서..
programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 일단 n이 무한대로 크다고 생각하고, 각 자리별로 결과 배열의 인덱스가 어떻게 배치되는지 그려보았다. 따라서, 각 층의 첫번째 칸의 인덱스는 f * (f+1) / 2와 같고, 결과 배열의 크기는 n * (n+1) / 2 와 같다. 규칙 찾기 0부터 n*(n+1)/2-1 까지의 숫자를 차례대로 배치할 때, 진행 방향은 총 3가지이다. DOWN(↓), RIGHT(→), UP(↖) 그리고..
programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 학생들이 가지고 있는 체육복의 개수를 저장하는 배열 students 일단 모든 학생이 기본적으로 1벌의 체육복을 가지고 있으므로 1을 n번 반복하여 저장한다. var students = [Int](repeating: 1, count: n) 잃어버린 사람은 체육복을 1벌 빼고, 여벌을 가져온 사람은 체육복을 1벌 증가시킨다. 여기서, lost 배열과 reserve의 값은 몇번째 ..
programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 스택 개념을 이용하여 푸는 문제다. 인형을 뽑을 때마다 담는 바구니가 스택이라고 생각하자. 스택에 인형을 담기 전에, peek(마지막에 삽입된 값을 읽어옴) 값과 비교해서 같은 인형이면 pop(마지막에 삽입된 값을 꺼내옴/삭제) 한다. 다른 인형이면 뽑은 인형을 push(스택의 마지막에 값을 삽입함) 한다. 스택의 개념을 사용할 뿐, 배열로 작성해도 된다. Swift의 경우 peek은 last, pop..
문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 numbers result [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,4,7,9,12] 입출력 예 설명 입출력 예 #1 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.) 3 = 2 + 1 입니다. 4 = 1 + 3 입니다. 5 = 1 + 4 = 2 + 3 입니다. 6 = 2 + 4 입니다. 7 = 3 + 4 입..