전체 글 69

swift로 구현한 연결리스트(Linked List)

[특징] 1. 다음 노드에 대한 참조를 가진 형태의 데이터 구조이다. 배열과 유사한 데이터 구조를 가지고 있지만 배열은 일정 규모의 연속된 메모리 범위를 할당받아야 하는 반면, 연결리스트는 그렇지 않다는 차이점이 있다. 보통 스택이나 큐 등 다른 구조를 구현하는 데 사용한다. 스택과 큐를 구현할 때 배열 대신 연결리스트를 사용할 수 있다. 2. 종류 - 단일 연결 리스트(Singly linked list) : 자료 공간 1개와 다음 노드를 가리키는 포인터로 구성된 노드를 가지는 연결 리스트 - 이중 연결 리스트(Doubly linked list) : 앞의 노드와 뒤의 노드를 가리키는 포인터가 2개 있는 연결 리스트 - 순환 연결 목록(Circular linked list) : 마지막 노드와 처음 노드가 ..

swift로 큐 구현하기

[특징]1. FIFO(First-In-First-Out)2. 주요 method - enqueue() : 새로운 데이터 삽입 - dequeue() : 가장 앞의 요소 삭제 및 반환 - peek() : 가장 앞의 요소 삭제 없이 반환만3. 프로퍼티 - count : 큐에 저장된 데이터 갯수 반환 - capacity : 큐 용량 반환4. 추가 method - isEmpty() : 큐가 비어있는 지 확인 - isFull() : 큐가 꽉 차 있는 지 확인 - clear() : 빈 값으로 재설정5. 추가 프로토콜 - CustomStringConvertible, CustomDebugStringConvertible : 상세정보 출력 - ExpressibleByArrayLiteral : []를 이용해서 초기화 가능 - ..

프로그래머스 - 다음 큰 숫자 (레벨2, swift)

문제출처 👇 programmers.co.kr/learn/courses/30/lessons/12911 문제설명 👀 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. - 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. - 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. - 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한 조건 - n은 1,000,000 이하의 자연수 입니다. 입출력 예 n result 78..

코딩테스트 2020.07.12

swift로 stack 구현하기

[특징] 1. LIFO(Last-In-First-Out) 2. 주요 method - push() : 새로운 데이터 삽입 - pop() : 가장 마지막 데이터 삭제 및 반환 - peek() : 가장 마지막 요소 삭제 없이 반환만 3. 프로퍼티 - count : 스택에 저장된 데이터 갯수 반환 4. 추가 method - isEmpty() : 스택이 비어있는 지 확인 - isFull() : 스택이 꽉 차 있는 지 확인 5. 추가 프로토콜 - CustomStringConvertible, CustomDebugStringConvertible : 상세정보 출력 - ExpressibleByArrayLiteral : []를 이용해서 초기화 가능 - IteratorProtocol, Sequence : for...in 구문..

프로그래머스 - 가장 큰 정사각형 찾기 (레벨2, swift)

문제출처 programmers.co.kr/learn/courses/30/lessons/12905 문제설명 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.)예를 들어12340111111111110010가 있다면 가장 큰 정사각형은12340111111111110010가 되며 넓이는 9가 되므로 9를 반환해 주면 됩니다. 제한 조건 - 표(board)는 2차원 배열로 주어집니다. - 표(board)의 행(row)의 크기 : 1,000 이하의 자연수 - 표(board)의 열(column)의 크기..

코딩테스트 2020.07.11

프로그래머스 - 행렬의 곱셈 (레벨2, swift)

문제출처 programmers.co.kr/learn/courses/30/lessons/12949 문제설명 2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 - 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다. - 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다. - 곱할 수 있는 배열만 주어집니다. 입출력 예 arr1 arr2 return [[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]] [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3..

코딩테스트 2020.07.10

프로그래머스 - 최댓값과 최솟값 (레벨2, swift)

문제출처 👇 programmers.co.kr/learn/courses/30/lessons/12939 문제설명 👀 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다. 제한 조건 - s에는 둘 이상의 정수가 공백으로 구분되어 있습니다. 입출력 예 s return "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" 문제풀이 -> 간단한 문제이다. 1) 공백을 기준으로 문자열을 나눠준다. 2) 나눠진 문자들을 Int타입..

코딩테스트 2020.07.07

터미널 명령어

Unix shell 종류 Bourne Shell, Bash, fish, zsh shell이란? 운영체제, 즉 커널을 감싸고 있는 shell(껍데기)라고 생각하면 된다. 운영체제와 대화하기 위해서는 이 shell을 통해야 한다. shell은 사용자가 입력한 명령어를 운영체제가 이해할 수 있도록 해석해준다. 기본 명령어 man: manual의 줄임말. 명령어에 대한 설명을 볼 수 있다 clear: 터미널 스크린 지우기 pwd: 내 경로 확인 rm -rf: 삭제 open . : 현재 경로의 폴더 열기 vim [파일이름]: 파일 편집기 ps: 현재 실행중인 프로세스 확인 -la: 상세내역 -e: 모든 프로세스를 보여줌 -f: 모든 정보 -c: 명령이름 kill [PID]: 특정 프로세스에 특정한 signal을..

Git 2020.07.06

프로그래머스 - 스킬트리 (레벨2, swift)

문제출처 programmers.co.kr/learn/courses/30/lessons/49993 문제설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다.예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다.위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다.선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, ..

코딩테스트 2020.07.06

프로그래머스 - 피보나치 수 (레벨2, swift)

문제출처 👇 programmers.co.kr/learn/courses/30/lessons/12945 문제설명 👀 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 - F(2) = F(0) + F(1) = 0 + 1 = 1 - F(3) = F(1) + F(2) = 1 + 1 = 2 - F(4) = F(2) + F(3) = 1 + 2 = 3 - F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한사항 - n은 1이상, 100000이하인 자연수입..

코딩테스트 2020.07.05