https://www.acmicpc.net/problem/26004 26004번: HI-ARC 첫째 줄에 문자열 $S$의 길이 정수 $N$이 주어진다. ($1 \leq N \leq 100\,000$) 둘째 줄에 문자열 $S$가 주어진다. 문자열 $S$의 모든 문자는 영어 대문자이다. www.acmicpc.net 난이도 : 브론즈 3 태그 : 구현, 문자열 설명 HIARC 각각의 알파벳의 개수가 몇개인지 구하고, 그 중 최솟값을 출력하면 됩니다. 소스코드 import kotlin.math.min fun main() { val br = System.`in`.bufferedReader() val n = br.readLine().toInt() val input = br.readLine() val strings ..
https://www.acmicpc.net/problem/10093 10093번: 숫자 두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오. www.acmicpc.net 난이도 : 브론즈 2 태그 : 구현 설명 단순히 두 숫자 사이의 값을 출력하는 문제입니다. 소스코드 fun main() { val num = readln().split(" ").map { it.toLong() } val n = num.min() val m = num.max() if (m - n
https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 난이도 : 골드 4 태그 : 자료 구조, 분리 집합, 그래프 이론, 그래프 탐색 설명 이미 갔던 도시를 또 다시 방문 및 경유하여 다른 도시로 가도 되므로, 가려고 하는 도시끼리 모두 이어져있는지 (같은 그룹에 있는지) 판단하면 될 것 같습니다. 이 문제에는 분리집합 알고리즘이 유용하게 쓰일 것 같네요. 분리집합 알고리즘을 모르신다면 아래 포스팅을 참고해주세요. https://uknowblog.t..
https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net 난이도 : 골드 5 태그 : 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색 설명 꽤 유명한 물통 문제 입니다. 해당 문제에서는 모든 경우의 수를 탐색해야 하므로, DFS, BFS 중 어느것을 사용해도 무방하나 소스코드 import java.lang.StringBuilder import java.util.LinkedList import java.util.Queue..
https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 난이도 : 골드 4 태그 : 구현, 백트래킹, 브루트포스, 시뮬레이션 설명 기업 코테에서 정말 자주 나오는 문제 유형은 뭘까요? 사실 저도 기업코테를 많이 본 사람은 아니지만, 구현은 일단 안나온 적은 없었던 것 같고, DFS/BFS/백트래킹도 정말 굉장히 자주 나왔던 것 같습니다. 구현 문제 중에서도 시뮬레이션 역시 단골 유형 중 하나인 것 같습니다. 분리집합/다익스트라 등도 좀 있던..
https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 난이도 : 실버 1 태그 : 그래프 이론, 그래프 탐색, 너비 우선 탐색 설명 모든 정점에 대해 최단거리를 출력하는 문제입니다. BFS를 응용해 풀 수 있겠네요. BFS를 사용한 최단거리 문제는 아래 포스팅을 참고해주세요. https://uknowblog.tistory.com/24 [백준 2178번][Kotlin] 미로 탐색 https://www.acm..
https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 난이도 : 실버 4 태그 : 자료구조, 스택 설명 각 단어끼리 이으면서, 선이 교차가 되면 안됩니다. 이는 스택을 사용해서 구현할 수 있겠는데요. BAAB 와 같이 주어지면, B를 스택에 넣습니다. (현재 스택 : B) A를 스택에 넣습니다. (현재 스택 : BA) A를 스택에 넣습니다. (현재 스택 : BAA) 새롭게 들어온 원소 A가 바로 앞에 있던 원소 A와 같으니, 제거합니다. (현재 스택 : B) ..
https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 난이도 : 실버 1 태그 : 수학, 브루트포스 알고리즘, 정수론, 소수 판정, 에라토스테네스의 체 설명 소수이면서, 동시에 팰린드롬인 수를 찾는 문제입니다. 팰린드롬은 그냥 단순히, 문자열을 뒤집었을 때 같은 문자열 (ex> 토마토, 기러기)을 팰린드롬이라고 합니다. 해당 문제에서는 에라토스테네스의 채가 유용하게 쓰일 것 같네요. 에라토스테네스의 채? http..
https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net 난이도 : 브론즈 3 태그 : 수학, 그리디, 사칙연산 설명 줘야하는 동전의 개수가 최소가 되야하는 문제입니다. 그리디 알고리즘의 기초격인 문제인데요. 단순히, 현재 줘야하는 금액에서 25센트 짜리 동전을 최대한 거슬러 주고, 그 다음 10, 그 다음 5, 나머지 1센트 짜리 동전으로 거슬러 주면 됩니다. 소스코드 import java.lang.StringBuilder fun main() = with(System.`in`.bufferedReader()) { val s..
https://www.acmicpc.net/problem/1325 if (!visited[nextNode]) { visited[nextNode] = true q.offer(nextNode) result[nextNode]++ } } } } val max = result.maxOrNull()!! val sb = StringBuilder() result.forEachIndexed { index, value -> if(value == max) sb.append(index).append(" ") } println(sb) } result는 각 컴퓨터가 해킹할 수 있는 컴퓨터 개수입니다. BFS를 한 번 진행할 때 마다 하나씩 증가시키고, 모든 노드(컴퓨터)에 대해 탐색을 진행합니다. 최종적으로, result 내 가..