everyday-develop-myself의 등록된 링크

키자드에 등록된 총 244개의 포스트를 확인하실 수 있습니다.

Tistory

14499번: 주사위 굴리기 - Kotlin

14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 문제 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 2 4 1 3 5 6 주사위는 지도 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져 있으며, 놓여져 있는 ..

Tistory

2589번: 보물섬 - Kotlin (BFS)

2589번: 보물섬 첫째 줄에는 보물 지도의 세로의 크기와 가로의 크기가 빈칸을 사이에 두고 주어진다. 이어 L과 W로 표시된 보물 지도가 아래의 예와 같이 주어지며, 각 문자 사이에는 빈 칸이 없다. 보물 지도의 www.acmicpc.net 문제 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 이동은 상하좌우로 이웃한 육지로만 가능하며, 한 칸 이동하는데 한 시간이 걸린다. 보물은 서로 간에 최단 거리로 이동하는데 있어 가장 긴 시간이 걸리는 육지 두 곳에 나뉘어 묻혀있다. 육지를 나타내는 두 곳 사이를 최단 거리로 이동하려면 같은 곳을 두 번 이상 지나가거..

Tistory

14891번: 톱니바퀴 - Kotlin

14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 문제 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, 그 오른쪽은 3번, 가장 오른쪽 톱니바퀴는 4번이다. 이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다. 톱니바퀴를 회전시키..

Tistory

16234번: 인구 이동 - Kotlin (DFS)

16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라..

Tistory

2606번: 바이러스 - Kotlin (DFS)

2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨..

Tistory

2667번: 단지 번호 붙이기 - Kotlin (DFS)

2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로..

Tistory

2309번: 일곱 난쟁이 - Kotlin

문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오. 입력 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. 출력 일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을..

Tistory

DFS와 BFS with 백준 1260번: DFS와 BFS

1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개..

Tistory

2178번: 미로 탐색 - Kotlin (BFS)

2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 ..

Tistory

1931번: 회의실 배정

1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보..

Tistory

2839번: 설탕 배달

2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 ..

Tistory

운영체제(2) - 프로세스와 스레드

프로세스 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 우리가 작업 관리자에 들어가 보았을 때 보이는 것들이 바로 프로세스라고 할 수 있다. 위의 사진에서 알 수 있는 것은 프로세스가 앱과 background 프로세스로 나누어져 있다는 것이다. 앱은 다른 말로 foreground 프로세스라고 할 수 있다. 하나의 프로세스에 할당되는 총 메모리 공간을 크게 커널 영역과 사용자 영역으로 나눌 수 있다. 커널 영역에서는 많은 프로세스가 CPU를 필요로 할 때 자원을 배분하는 PCB(Process Control Block, 프로세스 제어 블록)가 생성된다. 사용자 영역에는 프로그램이 동작하기 위한 각각 독립된 4가지의 메모리 영역을 가진다. (Code, Data, Stack, Heap..

Tistory

2563번: 색종이

2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 문제 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. 입력 첫째 줄에 색종이의 ..

Tistory

2789번: 블랙잭

2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후..

Tistory

SOLID 와 소프트웨어 디자인 패턴

SOLID (객체지향 설계 원칙) SOLID 원칙은 다음과 같은 다섯 가지 원칙의 앞글자를 따서 이름이 지어졌다. Single Responsibility Principle (SRP) - 단일 책임 원칙 Open-Closed Principle (OCP) - 개방-폐쇄 원칙 Liskov Substitution Principle (LSP) - 리스코프 치환 원칙 Interface Segregation Principle (ISP) - 인터페이스 분리 원칙 Dependency Inversion Principle (DIP) - 의존 역전 원칙 이 원칙들은 객체지향 설계를 할 때, 좀 더 유연하고 유지보수하기 쉬운 코드를 작성하기 위해 고안된 원칙들이다. 각각의 원칙은 아래와 같이 설명된다. 단일 책임 원칙(SRP)..

Tistory

H-Index

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 이 문제는 filter을 사용해서 간단하게 해결하였다. class Solution { fun solution(citations: IntArray): Int { var answer = 0 for(i in 0..citations.size) { var filter = citations.filter { it >= i } if(filter.size ..

Tistory

컴퓨터 구조(3) - 메모리

주기억장치의 종류에는 크게 RAM과 ROM으로 나뉜다. 하지만 우리가 메모리를 말할때는 RAM을 말하는 경우가 많다. RAM (Random Access Memory) RAM은 '임의 접근' 을 할 수 있는 메모리를 말하며 휘발성 저장 장치이다. 비휘발성 저장 장치로는 SSD, CD, USB가 있다. 우리가 컴퓨터를 구매할때 CPU와 GPU를 주로 고려하는데, 그에 몾지않게 RAM의 용량 또한 중요하다. CPU가 실행하고 싶은 프로그램을 RAM으로 가져오게 되는데 이때 RAM의 용량이 적다면 실행 시간이 길어지게 된다. 여러가지 프로그램을 동시에 가져올때도 마찬가지이다. RAM이 클수록 용량이 큰 프로그램을 버벅이지 않게 사용할 수 있다. RAM의 종류 1. DRAM (Dynamic RAM) - 동적 램으..

Tistory

운영체제(1) - 시작하기

운영체제는 응용 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램이다. 운영체제는 하드웨어와 응용 프로그램 사이에서 다른 응용 프로그램들이 유용한 작업을 할 수 있도록 환경을 제공한다. 다르게 표현하자면, 하드웨어를 감추고 겉으로 다른 프로그램들을 지원해준다고 생각할 수 있다. 이는 프로그램을 사용하는 사람이 편하게 쓸 수 있게 각종 기반 작업을 지원한다는 것으로 이해할 수 있다. 운영체제를 공부해야 하는 이유 사실 이 질문에 대한 대답은 한번이라도 오류 메시지를 접해 보았다면 쉽게 답할 수 있다. 대다수의 오류 메시지들이 운영체제로부터 발생한다. 우리가 작성한 코드가 하드웨어에서 실행되지 못한다면 운영체제는 오류 메시지를 띄워주게 된다. 프로그래밍 문법만 배워서는 해결할 ..

Tistory

컴퓨터 구조(1) - 시작하기

컴퓨터 구조를 알아야하는 이유 언뜻 보면 컴퓨터 구조는 프로그램 개발과는 큰 관련이 없어 보인다. 우리는 컴퓨터 구조를 모르더라도 지금까지 프로그램을 개발해왔기 때문이다. 하지만 좋은 개발자가 되기 위해서는 반드시 컴퓨터 구조를 깊게 이해하고 있어야 한다. 만약 우리가 개발한 프로그램에 사용자가 많아졌다고 생각을 해보자. 이때 우리는 사용자의 정보, 게시글 등을 저장할 저장 장치를 선택해야 한다. 우리는 이때 우리가 스스로 판단해서 장치를 선택해야 한다. 이건 프로그래밍 언어만 안다고 해서 해결할 수 있는 것이 아니다. 우리는 컴퓨터 구조를 이해해서 이런 성능, 용량, 비용 문제를 고려해 개발하여야 한다. 컴퓨터의 구성요소 컴퓨터의 구성 요소는 다음과 같다. 4가지 핵심 부품은 CPU, Memory, I..

Tistory

컴퓨터 구조(2) - CPU

CPU(Central Procesing Unit) CPU는 명령어의 해석과 자료의 연산, 비교등의 처리를 제어하는 컴퓨터 시스템의 핵심장치이다. 위의 그림이 우리가 배워야할 CPU의 구조이다. 그림만 봤을때는 이게 무엇을 말하는지 이해가 안되는것이 당연하다. 그렇지만 CPU의 구성 요소들을 하나하나씩 배워가면서 어떻게 진행되는지 이해를 하고 다시 봤을때는 매우 쉬운 그림이 될 것이다. CPU의 구성 요소 1. ALU(Arithmetic and Logical Unit) ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다. 그렇게 받아들인 피연산자와 제어 신호로 산술연산, 논리 연산 등 다양한 연산을 수행한다. ALU가 연산을 수행한 결과는 바로 메모..

Tistory

타겟 넘버

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 매우 간단한 dfs 문제이다. 숫자가 담긴 배열을 cnt가 numbers.size가 될때까지 '+' 와 '-'로 나눠서 dfs를 반복 해주면 된다. class Solution { var size = 0 fun solution(numbers: IntArray, target: Int): Int { return dfs(0, 0, numbers, ..

Tistory

자료구조의 분류

자료구조란? 자료구조는 서비스나 어플리케이션에서 필요한 데이터를 메모리에 어떻게 구조적으로 잘 정리해서 담아두고 관리하고 최종적으로 가장 효율적인 방식으로 필요한 데이터에 빠르게 접근하고 필요한 수정, 삽입, 삭제를 할 수 있도록 도와준다. 서비스에서 Client에게 데이터를 제공하거나 어플리케이션에서 사용자에게 필요한 데이터를 보여주거나 효율적으로 일을 처리하기 위해서는 적합한 자료구조를 사용하는 것이 정말 중요하다. 좋은 개발자가 되기 위해서는 memort effciency에 포커스를 맞춰서 알고리즘과 자료구조를 잘 공부해야 할 것이다. 자료구조의 분류 기본적인 자료구조를 선형, 비선형 구조로 나눴을때 우리가 알아야 하는 것들이다. 자료구조를 공부할때 우리는 자료 구조 안에 있는 데이터들의 순서가 보..

Tistory

List, Set, Map to Kotlin

우리는 자료구조를 분류할때 선형과 비선형을 기준으로 분류를 했었다. 그리고 분류한 자료구조들을 하나씩 공부해나갈 예정이다. 하지만 그 전에 Collection에있는 List, Set, Map을 학습하고자 한다. Kotlin에는 크게 List, Set, Map 3가지 Collection이 있다. 이 3가지 Collection은 중복을 허용하는지, 순서가 보장되는지에 따라 구분할 수 있다. 참고로, Kotlin Collection은 Mutable Collection과 Immutable Collection으로 구분해 사용한다. 둘의 차이는 변경이 가능한가, 불가능한가이다. List, Set, Map 모두 Mutable과 Immutable Collection을 지원한다. List List는 데이터가 저장될때 필..

Tistory

콜라 문제

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 사실 이 문제는 엄청 간단한 수학 문제이다. 딱히 고려해야 할 부분도 없어서 간단한 재귀함수로 구현했다. class Solution { var count = 0 fun solution(a: Int, b: Int, n: Int): Int { return coke(a, b, n) } fun coke(a: Int, b: Int, n: Int): ..

Tistory

삼총사

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 정수가 몇가지 주어졌을때 그중에서 3개를 고르고 그 수들의 합이 0이 되면 삼총사가 되는 간단한 조합 문제이다. 순열 (Permutation) & 조합 (Combination) 순열이란? 수학에서 순열(Permutation) 또는 치환은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. 즉, 순열은 정의역과 공역이 같은 일대일 대응..

Tistory

DATABASE(5) - 관계형 DB의 핵심 기능 JOIN

< 이 블로그의 내용은 생활코딩의 DATABASE 강의를 바탕으로 합니다 > 생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org JOIN 위에는 author와 topic 테이블이 생성되어져 있다. 우리가 하고 싶은것은 이 2개의 테이블을 결합하는 것이다. 두 개의 테이블을 자세히 보면 id 값이 서로 연결되어 있다는 것을 알 수 있다. 그래서 우리는 이것을 이용해서 다음과 같이 두 개의 테이블을 JOIN 할 수 있다. SELECT * FROM topic LEFT JOIN author ON topic.author_id = au..

Tistory

DATABASE(6) - Database Server, Database Client

< 이 블로그의 내용은 생활코딩의 DATABASE 강의를 바탕으로 합니다 > 생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org Internet과 DATABASE의 관계 만약 DATABASE로 일을 하려고 한다면 2가지가 필요할 것이다. Database Server Database Client DATABASE는 Client 와 Server 모델을 따르며 다수의 Client들은 하나의 서버에 연결될 수 없다. Database Server는 Backend에서 작동하는 소프트웨어이며 DATABASE가 만들어지고 저장되는 장소이다...

Tistory

메뉴 리뉴얼 - Kotlin

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 - 1차 카카오 블라인드 테스트의 문제를 풀면서 느끼는 점은 문제를 읽는 독해력과 문제의 핵심을 빠르게 파악하는 것이 상당히 중요하다는 것이다. 이 문제를 보고 시간 초과가 날거같긴 하지만 일단 조합을 사용해서 알파벳 대문자의 종류를 만들어서 List에 넣어놓고 orders에 있는 문자들과 비교를 해보는 식으로 해보았다. class Solu..

Tistory

괄호 변환

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 이 문제에는 친절하게도 다시 수행하라는 식으로 재귀함수를 사용해야 한다는 것을 알려주고 있다. 다만 문자열이 "올바른 괄호 문자열" 인지 판별하는 부분이 조금 헷갈렸는데 stack을 사용해서 '(' 일때 add 해주고 ')' 일때 pop을 해주는 방식을 통해 문자열이 올바른지 올바르지 않은지 판별했다. import java.util.* cl..

Tistory

가장 큰 수

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 이 문제는 numbers의 정수들의 첫자리가 앞으로 오게만 하면 가장 큰 수를 만들 수 있음으로 Comparator를 이용해서 정렬을 하였다 val comparator = Comparator { a, b -> a.compareTo(b) } 첫자리가 0 이면 꼬일 수 있음으로 let으로 해결 해주었다. class Solution { fun s..

Tistory

소수 찾기

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 이 문제는 순열을 이용해야 한다. 다만 numbers에 있는 정수는 한번만 쓰여져야 함으로 add한 뒤에는 substring으로 제거해줬다. 문자가 0으로 시작하는것을 방지하고 중복을 허용하지 않기 위해 Mutableset을 Int로 만들고 순열이 완료가 되면 만들어진 set에 있는 숫자가 소수인지 판별하고 그 숫자를 출력해 주었다. cla..

Tistory

귤 고르기

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 - 1차 tangerine에 있는 값을 숫자와 빈도수로 나눠서 map에 넣었다. 그리고 map을 value 값으로 정렬 후 k값이 0보다 작아질 때 까지 count하고 그 count 값을 출력해줬다. 테스트 케이스에서는 작동했지만 제출 후 채점에서 오류가 발생했다. class Solution { fun solution(k: Int, tang..

Tistory

알고리즘과 설계기법

알고리즘이란? 수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차이다. 계산을 실행하기 위한 단계적 절차를 의미하기도 한다. 즉, 문제 풀이에 필요한 계산절차 또는 처리과정의 순서를 뜻한다. 프로그램명령어의 집합을 의미하기도 한다. 다음은 알고리즘 개발의 정형적인 단계이다. 문제 정의 → 모델 고안 → 명세 작성 → 설계 → 검증 → 분석 (복잡도 등) → 구현 → 테스트 → 문서화 알고리즘 설계기법 훌륭한 알고리즘 중에는 문제를 해결하는 방법과 고속화의 테크닉에 있어서 공통점을 가진 알고리즘이 많이 있다. 예를들면 퀵 정렬과 합병 정렬은 정렬 대상이 되는 데이터가 들어 있는 배열을 두 개로 나눠서 두 배열을 각각 정렬한 후, 그들 두 배열을 연결한다는 점에서 ..

Tistory

DATABASE(4) - Relational DATABASE

< 이 블로그의 내용은 생활코딩의 DATABASE 강의를 바탕으로 합니다 > 생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org 관계형 데이터베이스의 필요 테이블에서 데이터들이 셀 수 없을만큼 늘어나고 용량이 늘어난다면 데이터들은 중복될 수 밖에 없다. 데이터가 많아지면 데이터들에 대한 수정이 어려워진다. 관계가 있으면 유지보수가 상당히 용이해진다. 그리고 좋은 관계형 데이터베이스를 만들려면 정보의 이상 현상(Anomaly)가 생기지 않도록 해야한다. 이상 현상(Anomaly) 갱신 이상(Modification Anomaly..

Tistory

Queue & Stack

Queue 먼저 들어간 자료가 먼저 나오는 자료구조이다. FIFO(First In First Out, 선입선출) 또는 LILO(Last In Last Out, 후입후출) 라는 구조를 갖는다. Method Description add(E e) Queue에 객체를 추가한다. Queue의 남아 있는 space가 없을 경우 exception을 throw한다. element() Queue에 가장 먼저 들어간 객체를 return한다. offer(E e) Queue에 객체를 추가한다. 이때는 exception을 발생시키지 않고 성공 여부에 대해 return한다. peek() Queue에 가장 먼저 들어간 객체를 제거하지 않고 확인한다. poll() Queue에 가장 먼저 들어간 객체를 제거하고 해당 객체를 retur..

Tistory

모음 사전

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 이 문제는 순열 완전탐색을 이용해서 깊이 우선탐색으로 구현하였다. 알파벳 모음을 만들면서 word에 해당하는 알파벳이 나오면 탐색을 그만하고 count 값을 출력해주는 식으로 구현하였다. class Solution { var count = 0 val alphabet = "AEIOU".toList() val answer = ArrayList(..

Tistory

DATABASE (2) - MySQL

< 이 블로그의 내용은 생활코딩의 DATABASE 강의를 바탕으로 합니다 > 생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org MySQL 이란? MySQL은 1995년에 발표된 오픈소스 RDBMS다. RDBMS의 종류로는 많은 데이터 베이스들이 있지만, 그 중 MySQL을 첫번째로 공부하는 이유는 MySQL이 가장 널리 사용되고 있는 RDBMS이며 무료이고 오픈 소스라는 점에서 많은 기업들이 MySQL을 사용하고 있기 때문이다. MySQL의 구조 MySQL의 구조는 크게 3가지로 나뉜다. 표(table): 데이터를 기록하는..

Tistory

DATABASE (3) - 테이블과 CRUD

< 이 블로그의 내용은 생활코딩의 DATABASE 강의를 바탕으로 합니다 > 생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org SQL SQL은 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 질의 언어이다. 테이블의 생성 이제 MySQL에 테이블을 한번 봐 보자 CREATE TABLE topic( id INT(11) NOT NULL AUTO_INCREMENT, title VARCHAR(100) NOT NULL, description TEXT NULL, created DATETIME NOT NULL, autho..

Tistory

오픈 채팅방

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의풀이 출력을 할때 id와 그에 맞는 닉네임을 MutableMap에 Key 와 Value로 넣어주었고 Leave가 아니면 key와 Value값을 넣어주었다. action이 Enter이던 Change이던 상관없이 값을 넣어주면 되서 생각보다 간단하였다. import java.util.* class Solution { fun solution(record..

Tistory

피로도

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 이 문제는 모든 던전을 방문해야 함으로 깊이 우선 탐색으로 구현하고자 하였다. 재귀함수를 이용해 코드를 구현하였다. class Solution { var answer: Int = 0 var count = 0 val visited = BooleanArray(8) fun dfs(k: Int, index:Int, dungeons: Array) {..

Tistory

순열 (Permutation) & 조합 (Combination)

순열이란? 수학에서 순열(Permutation) 또는 치환은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. 즉, 순열은 정의역과 공역이 같은 일대일 대응이다. n개의 원소의 순서를 뒤섞는 순열의 개수는 n의 계승 n!와 같다. 즉, n 이하의 양의 정수들을 곱한 값이다. 쉽게 말하자면 서로 다른 n개중에서 r개를 선택하는 경우의 수이다. 1. Swap 을 이용한 순열 첫번째는 swap 함수를 만들어서 배열들의 값을 직접 바꾸는 방법이다. 배열의 첫 값부터 순서대로 하나씩 바꾸며 모든 값을 한번씩 swap 한다. depth 를 기준 인덱스로 하여 depth 보다 인덱스가 작은 값들은 그대로 고정하고 depth 보다 인덱스가 큰 값들만 가지고 다시 swap 을 진행한다. 하지만 이 방식은 사전 ..

Tistory

개발자의 기본 소양 쌓기

학교를 다니면서 미래에 관한 고민을 하다가 안드로이드 스튜디오로 앱을 만드는 강의를 듣게 되었다. 내가 머릿속으로 생각했던 것들을 실제로 구현할 수 있다는 것에 많은 흥미를 느꼈고 앱을 만드는 개발자가 되어야겠다고 마음을 먹었다. 안드로이드 공부를 어떻게 시작해야 하는지 막막했을때 NAVER TECH CONCERT의 개발자 로드맵 강의를 접하게 되었다. TECH CONCERT: MOBILE 2019 - 안드로이드 개발자 로드맵 NAVER Engineering | 내용 네이버 안드로이드 개발자 3년차가 되는 과정에서 졸업생은 무엇을 준비하고, 어떤 걸 공부해야 하는지 키워드와 노하우를 공유합니다. tv.naver.com 강의에서는 안드로이드 개발자가 되기 위한 기본기를 쌓는것을 강요하고 있었다. 그래서 이..

Tistory

DATABASE (1)

< 이 블로그의 내용은 생활코딩의 DATABASE 강의를 바탕으로 합니다 > 생활코딩 hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그 opentutorials.org 데이터베이스의 본질 - CRUD 데이터를 관리하는 것에 필요한 작업은 데이터를 생성하고, 읽고, 수정하고, 삭제하는 4가지 작업이 전부라고 할 수 있다. 이름 기능 이름 기능 CREATE 생성 UPDATE 수정 READ 읽기 DELETE 삭제 어떤 데이터베이스를 공부해야 하는가? 데이터베이스에 대한 공부를 시작하려고 하니 데이터베이스의 종류가 너무 많아서 어떤 데이터베이스를 공부해야 하는지 고민이 ..

Tistory

주차 요금 계산

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 나의 풀이 자동차 넘버와 얼마나 머물렀는지 시간을 같이 배열에 넣기 위해 MutableMap을 사용하였다. import java.util.* class Solution { var basicTime = 0 var basicFee = 0 var unitTime = 0 var unitFee = 0 fun solution(fees: IntArray, reco..

1 2 3