굥굥 DEV
[백준][코틀린] 11729 하노이 탑 이동 순서
문제 내용 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 입력 첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)이 주어진다. 출력 첫째 줄에 옮긴 횟수 K를 출력한다. 두 번째 줄부터 수행 과정을 출력한다. 두 번째 줄부터 K개의 줄에 걸쳐 두 정수 ..
[백준][코틀린] 2447 별 찍기 - 10
문제 내용 문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, …)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 입력 첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k
[백준][코틀린] 10870 피보나치 수 5
문제 내용 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 $$F_n = F_{n-1} + F_{n-2} (n ≥ 2) $$가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. 예제 입력 예제 출력 10 55 문제 풀이 첫번째 풀이는 재귀..
[백준][코틀린] 10872 팩토리얼
문제 내용 문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다. 출력 첫째 줄에 N!을 출력한다. 예제 입력 예제 출력 10 3628800 0 1 문제 풀이 첫번째 풀이 기본적인 재귀를 활용한 풀이이다. 문제 조건대로 출력하면 된다. 두번째 풀이 dp를 활용한 풀이이다. ̆̈ 코드 // 재귀를 이용한 풀이 fun main() { println(factorial(readLine()!!.toInt())) } fun factorial(number: Int): Int { return if (number in 0..1) 1 else factorial(number-1) * number } // DP를 활용한 풀이 fu..
[네트워크 기초] 네트워크를 만드는 것
🐯 네트워크의 기초를 가볍고 빠르게 훑어본 다음 심도 있게 공부해 볼 예정이다! 📚 그림으로 배우는 네트워크 원리를 읽고 정리합니다! 1. 네트워크를 구성하는 기기 라우터 레이어 2 스위치 레이어 3 스위치 자세한 설명은 포스팅 예정 (각 네트워크 기기의 자세한 동작 메커니즘) 네트워크들의 기기는 모두 데이터를 전송한다. 데이터 전송 처리는 주로 다음 세 단계로 이루어진다. 데이터 수신 : 전기 신호 등 물리적 신호로 변환된 데이터를 원래 디지털 신호 (0, 1)로 되돌린다. 데이터를 보낼 곳을 결정 : 데이터에 부가된 제어 정보를 참조하여 전송할 곳을 결정한다. 데이터 전송 : 데이터를 물리적인 신호로 변환해서 내보낸다. 필요하면 제어 정보를 고쳐쓴다. 네트워크 기기의 차이는 2번째 단계에 있다. 데이..
[백준][코틀린] 1707 이분 그래프
문제 내용 문제 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때, 그러한 그래프를 특별히 이분 그래프 (Bipartite Graph) 라 부른다. 그래프가 입력으로 주어졌을 때, 이 그래프가 이분 그래프인지 아닌지 판별하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 두고 순서대로 주어진다. 각 정점에는 1부터 V까지 차례로 번호가 붙어 있다. 이어서 둘째 줄부터 E개의 줄에 걸쳐 간선에 대한 정보가 주어지는데, 각 줄에 인접한 두 정점의 번호 u, v (u ≠ v)가 빈..
[백준][코틀린] 7562 나이트의 이동
문제 내용 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, …, l-1} × {0, …, l-1}로 나타낼 수 있다. 둘째 줄과 셋째 줄에는 나이트가 현재 있는 칸, 나이트가 이동하려고 하는 칸이 주어진다. 출력 각 테스트 케이스마다 나이트가 최소 몇 번만에 이동할 수 있는지 출력한다. 예제 입력 예제 출력..
[백준][코틀린] 2206 벽 부수고 이동하기
문제 내용 문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다. 한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다. 맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000)이 주어진다. 다음 N..
안드로이드 프로세스 상태와 액티비티 상태
안드로이드 시스템에서는 제한된 리소스를 효율적으로 관리해야 한다. 그러면서 항상 사용자에게 응답할 수 있어야한다. 따라서, 안드로이드는 앱이 실행되는 프로세스와 앱을 구성하는 모든 컴포넌트의 생명주기와 상태를 전적으로 통제한다. 그래서 안드로이드 앱을 개발할때 생명주기 관리 모델을 이해하는 것이 중요하다! 앱이 실행될때 생길 수 있는 상태 변경에 대처할 수 있는 방법도 잘 숙지해두어야한다. 안드로이드 앱과 리소스 관리 안드로이드 앱은 안드로이드 운영체제 하에 별개의 프로세스로 실행된다. 그리고, 장치의 자원은 무한정 있는 것이 아니라 한정적이다. 이러한 자원이 꽉 차려고 할 때 시스템에서는 메모리 확보를 위해 프로세스를 중단한다. 어떤 프로세스를 중단할까? importance hierachy(중요도 서열..
[네트워크 기초] 네트워크의 기본
🐯 네트워크의 기초를 가볍고 빠르게 훑어본 다음 심도 있게 공부해 볼 예정이다! 📚 그림으로 배우는 네트워크 원리를 읽고 정리합니다! 1. 무엇을 위해서 네트워크를 이용할까? 네트워크란 무엇일까? 넓은 의미에서 네트워크 : 물류, 교통, 인맥 등 포함되고, 그물 처럼 구성된 시스템을 나타냄 좁은 의미에서 네트워크 : 컴퓨터끼리 데이터를 주고 받는 시스템인 컴퓨터 네트워크 네트워크를 이용하는 목적은 무엇일까? 정보를 수집한다. 문서 파일 등을 공유한다. 효율적으로 커뮤니케이션 한다. 출장 신청이나 정산 등의 업무를 처리한다. 2. 누가 이용할 수 있는 네트워크인가? 네트워크의 분류 사용자를 제한하는 사설 네트워크 : 사내 네트워크나 가정 네트워크처럼 접속할 수 있는 사용자를 직원이나 가족으로 한정하는 네트..
[Java] 연산자
연산자 : 연산을 수행하는 기호 (+, -, *, / 등) 피연산자 : 연산자의 작업 대상 (변수, 상수, 리터럴, 수식) 피연산자의 개수에 의한 분류 피연산자의 개수가 하나면 '단항 연산자', 두 개면 '이항 연산자', 세 개면 '삼항 연산자'라고 부름 이름 분류 종류 설명 기타 대입 연산자 단항, 대입 = 값을 대입할 때 사용 증감 연산자 단항, 증가 ++, -- 피연산자에 저장된 값을 1 증가 또는감소 전위에 붙으면 값이 참조되기 전 증감 후위에 붙으면 값이 참조된 후 증감 부호 연산자 단항, 부호 +, - 피연산자의 부호를 반대로 변경한 결과 반환 산술 연산자 이항, 대입 +, -, *, /, % 사칙 연산과 나머지 연산 나눗셈, 나머지 연산 : 0으로 나눌 시 런타임 에러 발생 비교 연산자 이항..
[백준][코틀린] 1697 숨바꼭질
문제 내용 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 예제 입력 예제 출력 5 17 4 문제 풀이 BFS로 최단..
[백준][코틀린] 7569 토마토
문제 내용 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지 그 최소 일수를 알..
[백준][코틀린] 2178 미로 탐색
문제 내용 문제 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)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 ..
[백준][코틀린] 7576 토마토
문제 내용 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는 격자모..