![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnHaf3%2Fbtr6QrwIFxH%2F0IkDAmeB16taGAknYemZN0%2Fimg.png)
https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 난이도 : 실버 4 태그 : 그리디 설명 그리디 알고리즘 문제로, 늘 최적의 해를 선택하는 문제입니다. 동전의 개수를 최소로 해야 하므로, 동전의 단위가 가장 큰 것부터 선택해야 합니다. 소스코드 import java.io.BufferedReader import java.io.InputStreamReader fun main() { v..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpy9p1%2Fbtr6Gql7O1P%2FZ8qn1O8HZrwDSl7MyPIY0K%2Fimg.png)
https://www.acmicpc.net/problem/4458 4458번: 첫 글자를 대문자로 첫째 줄에 줄의 수 N이 주어진다. 다음 N개의 줄에는 문장이 주어진다. 각 문장에 들어있는 글자의 수는 30을 넘지 않는다. 모든 줄의 첫 번째 글자는 알파벳이다. www.acmicpc.net 난이도 : 브론즈 3 태그 : 구현, 문자열 설명 문자열의 첫 번째 글자만 대문자로 바꾸는 문제입니다. 저는 문자열을 입력받아 CharArray로 변환시킨 뒤, 첫 번째 글자만 대문자화(Uppercase)로 변환한 후, 출력하였습니다. 소스코드 fun main() { repeat(readln().toInt()) { var line = readln().toCharArray() line[0] = line[0].upper..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrBwLy%2Fbtr6NlYtYW2%2FP07rqVrakAL3YPeoqCD360%2Fimg.jpg)
TCP 소켓 통신 네트워크에 대해 설명하는 글이 아니므로, 간단히 설명해보겠습니다. 소켓 통신은 방법에 따라 TCP, UDP로 나뉩니다. TCP는 그 유명한 3 - Way Handshaking으로 통신을 시작하는데, 먼저 송신자(Client)가 연결을 맺기 위한 요청(syn)을 보내고, 수신자(Server)가 수락하는 SYN+ ACK 패킷을 보냅니다. 이후, 송신자(Client)는 확인했다는 의미로 ACK 패킷을 보내 연결하는데, 이러한 동작방식 때문에 TCP를 연결 지향적(Connection-Oriented) 프로토콜이라 합니다. 비연결 지향적(Connection-Less)인 UDP에 비해 신뢰성을 제공하나, 복잡한 연결과정 때문에 속도면에서는 UDP에 비해 느립니다. 이번엔 이런 TCP 프로토콜을 사..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBoww0%2Fbtr6DXD9wKM%2FgRPitcypX6O6mDiYAIWb71%2Fimg.jpg)
Wemos D1 mini. UNO 보다 작으면서, 와이파이가 내장되어 있어서 저는 와이파이를 사용해야 하는 작업이 있을 때 주로 씁니다 이번엔 D1 mini로 와이파이 연결을 해봅시다. Wemos D1 mini 세팅에 관해선 아래 글을 참고해주세요. https://uknowblog.tistory.com/254 [아두이노] Wemos D1 mini 세팅 Wemos D1 mini 아두이노를 사용할 때 가장 흔히 볼 수 있는 건 아무래도 UNO 보드일 것입니다. 하지만 UNO 보드는 WiFi를 사용하려면 별도의 와이파이 모듈을 사용해야 합니다. Wemos D1 mini 보드는 UNO 보 uknowblog.tistory.com #include // 와이파이명 const char* ssid = "(와이파이 명)"..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnaSC8%2Fbtr6CgcUSve%2F0XEkMlKsF6y1NNlgASDw61%2Fimg.png)
Wemos D1 mini 아두이노를 사용할 때 가장 흔히 볼 수 있는 건 아무래도 UNO 보드일 것입니다. 하지만 UNO 보드는 WiFi를 사용하려면 별도의 와이파이 모듈을 사용해야 합니다. Wemos D1 mini 보드는 UNO 보드보다 작고, WiFi 모듈이 탑재되어 있어 별도의 와이파이 모듈 없이 와이파이 연결이 가능합니다. UNO 보드에 별도의 와이파이 모듈을 사용하면 가끔 와이파이 연결이 불안정하거나, 접촉불량도 많이 나서 저는 와이파이를 사용할 땐 D1 mini를 주로 사용합니다. Arduino Sketch에 Wemos D1 mini 추가 File - Preferences를 클릭합니다. Additional boards manager URLs에 http://arduino.esp8266.com/s..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8ERao%2Fbtr6tV0Tmde%2FkoHf1tW1Z8fOPRfW1gr2fk%2Fimg.png)
https://www.acmicpc.net/problem/2902 2902번: KMP는 왜 KMP일까? 입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이픈 ('-', 아스키코드 45)로만 이루어져 있다. 첫 번째 글자는 항상 대문자이다. 그리고, 하이픈 뒤에는 반드 www.acmicpc.net 난이도 : 브론즈 2 태그 : 구현, 문자열 설명 하이픈(-)으로 분리된 여러 단어가 주이집니다. 하이픈을 매개로 단어를 나눈 뒤, 각 문자열의 첫 번째 글자를 가져오면 되겠네요. 소스코드 fun main() { println(readln().split("-").map { it[0] }.joinToString("")) } readln()으로 줄을 읽어서, split("-"..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbduxUa%2Fbtr6tVl9g9E%2FxML7zlmrxrr8UTPcmkmSZ1%2Fimg.png)
https://www.acmicpc.net/problem/9370 9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 난이도 : 골드 2 태그 : 데이크스트라, 그래프 이론 설명 다익스트라를 응용한 문제입니다. S에서 시작하여, G - H 혹은 H - G 구간을 거쳐, t1, t2, t3, 총 3개의 목적지 후보로 갈 수 있다 가정해보겠습니다. 이 때, 시작점인 S와 목적지인 T1의 최단거리가 S - G - H - T1 혹은 S - H - G - T1 과 같을 때, T1은 가능한 목적지 경로입니다. S - ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F90k9E%2Fbtr6tW4s1xe%2FoWM6rHWfe8bIWWWINRWYPk%2Fimg.png)
https://www.acmicpc.net/problem/15802 15802번: 타노스 당신이 살아남는다면 1을, 살아남지 못한다면 0을 출력한다. www.acmicpc.net 난이도 : 0 태그 : 구현 설명 보면서 이게 뭐지??? 싶었던, 백준의 번외 문제입니다. 코테를 하다가 지칠 땐, 이런 번외문제 한 두개 풀면 나름 재미있어요. 으음.. 그냥 1 또는 0을 출력하는 문제인가 싶어 1을 제출했는데, 틀렸습니다를 받았습니다. 무슨 넌센스가 숨어있는거지??? 하며 질문게시판을 둘러보던 중, 아래 글을 발견하였습니다. https://www.acmicpc.net/board/view/61197#comment-103863 글 읽기 - 15802 질문 댓글을 작성하려면 로그인해야 합니다. www.acmicp..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1sCDO%2Fbtr6rxRoW6a%2Ft1vOMDnjcL2wBIHdOuXfzK%2Fimg.png)
https://www.acmicpc.net/problem/12891 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 난이도 : 실버 2 태그 : 문자열, 슬라이딩 윈도우 설명 슬라이딩 윈도우란 고정 크기의 구간을 이동하며 윈도우 내 데이터를 탐색하는 기법입니다. 투 포인터와 비슷한 원리로 작동합니다. 본 문제에서는 항상 고정된 p 사이즈 만큼의 구간만을 탐색하기 때문에, 첫 0 ~ p구간 까지 각각 A, C, G, T의 개수를 카운팅 한 뒤, 구간을 하나씩 이동하며 A, C, G, T의 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbptRzO%2Fbtr6ofw7Ff4%2FtqCgiF1PcSCITK1caBKmeK%2Fimg.jpg)
컬렉션과 람다식 코틀린에서 정말 편했던 기능 중 하나인 컬렉션 + 람다식입니다. 자바와 마찬가지로, 코틀린은 배열, 리스트, 집합, Map 등에 sum, avg, sort, max, min, reverse, contain 등 여러 메소드를 지원합니다. (자료구조와 타입 따라 지원되는 메소드는 조금씩 다릅니다.) 그 중, 코틀린에서는 위 메소드들에 람다식을 사용한 여러 편의기능을 제공하는데요. 대표적인 몇 가지의 기능들을 알아보겠습니다. 아래 메소드들은 대부분 List, Set, Map등 컬렉션 뿐만 아닌 배열에서도 사용이 가능합니다. forEach, forEachIndex val arr = arrayOf(10, 20, 123, 64, 12) arr.forEach { println(it) } // 출력 1..