no image
[Kotlin] BOJ1525 퍼즐
링크 : https://www.acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net # 배운점 ◆ Array형태를 String으로 변환하여 String의 index를 좌표계로 사용하여 계산하는법을 배웠다. val zeroIndex = node.map.indexOf('0') val currentY = zeroIndex / 3 val currentX = zeroIndex % 3 배열을 String으로 변환했을 시 현재 위치를 배열의 좌표로 다시 변환하고 싶은 경우 ⊙ 현재 위치의 y좌표 : 현재보고있는 StringIndex / 배열의 너비 ⊙ 현재 위..
2023.01.24
no image
[Kotlin] BOJ2234 성곽
DFS, BFS 둘 다 풀 수 있는 문제 (링크 : https://www.acmicpc.net/problem/2234) 2234번: 성곽 첫째 줄에 두 정수 N, M이 주어진다. 다음 M개의 줄에는 N개의 정수로 벽에 대한 정보가 주어진다. 벽에 대한 정보는 한 정수로 주어지는데, 서쪽에 벽이 있을 때는 1을, 북쪽에 벽이 있을 때는 2를, www.acmicpc.net 비트마스킹으로 BFS의 방향을 나타내는 방법이 힌트에 나와있었지만 비트마스킹이 뭔지 몰랐기에 그냥 하던대로 구현을 하려고 했지만,, 메모리 초과의 벽을 넘지 못했다.. ◆ 기존 구현 방법 각 좌표에 있는 번호를 when으로 분기문으로 8,4,2,1 숫자를 순서대로 0이 될때 까지 빼줌으로써 방향을 구하는 방식을 사용함 근데 이 과정에서 변..
2023.01.20
no image
[Kotlin] BOJ2583 영역 구하기
지도의 영역 개수와 영역의 너비를 구하는 문제 (링크 : https://www.acmicpc.net/problem/2583) 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 소스코드(BFS) import java.io.BufferedReader import java.io.FileInputStream import java.io.InputStreamReader import java.util.LinkedList import java.util.Queue import java.util.StringT..
2023.01.13
no image
[Kotlin] BOJ10026 적록색약
지도의 영역 개수를 구하는 문제 (BFS , DFS 둘 다 풀이가 가능) (링크 : https://www.acmicpc.net/problem/10026) 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 소스코드(DFS) import java.io.BufferedReader import java.io.FileInputStream import java.io.InputStreamReader private val MY = arrayOf(0,0,1,-1) //좌 ,우 ,위 ,아래 private val MX = a..
2023.01.12
no image
[Kotlin] BOJ2606 바이러스
(링크 : https://www.acmicpc.net/problem/2606) 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 소스코드(BFS) import java.io.BufferedReader import java.io.FileInputStream import java.io.InputStreamReader import java.util.LinkedList import java.util.Queue private var N = 0 //컴퓨터 수 private var M = 0 //관계 수 private latei..
2023.01.07
no image
[Kotlin] BOJ2667 단지번호붙이기
(링크 : https://www.acmicpc.net/problem/2667) 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 소스코드(BFS) import java.io.BufferedReader import java.io.FileInputStream import java.io.InputStreamReader import java.util.LinkedList import java.util.Queue private val MY = arrayOf(0,0,1,-1) //좌 ,우 ,위 ,아래 private val M..
2023.01.06
no image
[Kotlin] BOJ7569 토마토
3차원배열에서 BFS를 사용해서 풀었던 문제 (링크 : https://www.acmicpc.net/problem/7569) 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 소스코드 import java.io.BufferedReader import java.io.FileInputStream import java.io.InputStreamReader import java.util.* private var M = 0 //가로 (2 이상 100이하) private var N = 0 //세로 (..
2023.01.05
no image
[Kotlin] BOJ9663 N-Queen
처음에는 따로 Point라고 Data class를 만들어서 조건을 만족하는 자리를 만나면 해당 객체에 좌표를 보관하는 식으로 문제를 풀었엇는데 계속해서 메모리 초과가 나왔다. 메모리를 어떻게하면 줄일 수 있을까 하고 계속해서 고민해보고 허탕치다가 데이터클래스를 안쓰고 colum값만 저장하는 방식으로 푸니까 풀렸다. 교훈 : DFS풀때 data class(객체) 사용하면 메모리를 생각보다 많이 잡아먹으니 감안하고 코드를 짜자! (data class 뿐만아니라 Pair 사용해도 메모리를 많이 먹으니 메모리 커트라인이 넉넉하지 않다면 그냥 객체 사용을 지양하는게 좋을듯 하다.) (링크 : https://www.acmicpc.net/problem/9663) 9663번: N-Queen N-Queen 문제는 크기가..
2022.08.19
no image
[Kotiln] BOJ1920 수 찾기
그냥 시간 복잡도 계산해서 좌우 Pivot잡아서 풀었었는데 이진 탐색 으로도 풀 수 있는 문제였다. 아래 이진탐색 코드도 첨부 링크 : https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net #Pivot 풀이 import java.io.BufferedReader import java.io.FileInputStream import java.io.InputStreamReader fun main() { val..
2022.08.17