Algorithm
[Baekjoon] 2667번 단지번호붙이기(feat. Java)
접근단지에 대한 접근은 DFS 로 처리단지구분은 숫자로 하여 DFS 가 접근한 단지에 대해 숫자로 기록DFS 가 끝나면 단지 탐색이 끝나게 된 것임으로 단지 숫자 증가 해결import java.io.*;import java.util.*;public class Main { static int N; static int[][] arr; static int[][] visited; static int beaconValue = 1; // 단지 번호 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System...
[Baekjoon] 2606번 바이러스(feat. Java)
접근각 컴퓨터를 접점으로 취급한채로 간선을 이중배열로 연결 관계 표시방문여부와 접점간에 연결여부를 통해 접근가능한지 확인 해결import java.io.*;import java.util.*;public class Main { static int[][] arr1; static int[][] visited1; static HashSet set; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); ..
[Baekjoon] 1260번 DFS와 BFS(feat. Java)
접근DFS 는 재귀호출BFS 는 Queue 가 핵심접점이 이어진 간선을 어떻게 구성할것이냐가 핵심이중 배열을 통해 접점간에 간선을 표시인덱스 접근의 편의를 위해 0번째 자리는 패딩설정 해결import java.io.*;import java.util.*;public class Main { public static String dfs = ""; public static int[][] arr1; public static int[][] visited1; public static List visitedElement1; public static String bfs = ""; public static int[][] arr2; public static int[][] visited..
[Baekjoon] 2178번 미로 탐색(feat. Java)
접근편의를 위해 N+1, M+1 크기 만큼의 이중배열 사용방문 여부 확인을 위한 visited 이중 배열 사용bfs 방식을 위한 count 이중 배열 사용(미로 이중배열과 같은) 해결 BFSimport java.io.*;import java.util.*;public class Main { static int N; static int M; static int[][] miro; static int[][] countMiro; static int[][] visited; static Integer result = null; static Queue queue = new LinkedList(); public static void main(String[] args) thro..
프로그래머스 :: 연습문제 :: 연속된 부분 수열의 합
풀이 /** * 설명 * - 투 포인터 알고리즘을 사용하여 문제를 풀이하였다. * - 투 포인터 알고리즘은, 구간합을 구할 때 사용한다. * */ class 연속된_부분_수열의_합 { fun solution(sequence: IntArray, k: Int): IntArray { val answerList = mutableListOf() var sum = sequence.first() var start = 0 var end = 0 val sequenceSize = sequence.size while(end < sequenceSize){ /** * 설명 * - end가 sequenceSize와 같아졌을 때 sum이 k보다 작으면 더 이상 계산할 필요가 없다. * */ if(end == sequenceSize..
프로그래머스 :: 연습문제 :: 무인도 여행
풀이 class 무인도여행 { fun solution(maps: Array): IntArray { val answer = mutableListOf() val width = maps[0].length val height = maps.size val visited = Array(height) { IntArray(width) { 0 } } lateinit var twoDimensionTargetIndex: Pair /** * 설명 * - 지도의 모든 부분을 탐색한다. * * 동작예시 * - 조건1 : 방문하지 않은 곳 * - 조건2 : 섬인곳 * - 위 두 조건을 만족할때 dfs 를 통해 인접한 섬에 대한 음식의 갯수를 추출한다. * */ for (rowIndex in 0 until height) { for ..
프로그래머스 :: 연습문제 :: 뒤에 있는 큰 수 찾기
풀이 fun solution(numbers: IntArray): IntArray { val result = IntArray(numbers.size){-1} val stack = Stack() for(numberIndex in numbers.indices){ val compareNumber = numbers[numberIndex] if(stack.isEmpty()){ stack.push(Pair(numberIndex, compareNumber)) } else{ /** * 설명 * - stack 이 비어있을때 peek, pop 을 시도하면 EmptyStackException 이 발생한다. * - 따라서 while 조건문 내부에서 stack.peek() 를 바로 시도하게 되면 안된다. * - 그렇기 떄문에 s..
프로그래머스 :: 연습문제 :: 테이블 해시 함수
풀이 class 테이블_해시_함수 { fun solution(data: Array, col: Int, row_begin: Int, row_end: Int): Int { val sortedTuples = getSortedTuples(data, col, row_begin, row_end) val modValues = getModValues(sortedTuples, row_begin) val xorOperatedValue = getXorOperatedValue(modValues) println(xorOperatedValue) return xorOperatedValue } /** * 설명 * - 문제의 규칙에 따라 튜플을 정렬한다. * - row_begin, row_end 까지 배열을 잘라낸다. * */ pri..
프로그래머스 :: 연습문제 :: 혼자 놀기의 달인
풀이 class 혼자놀기의달인 { fun solution(cards: IntArray): Int { var answer = 0 /** * Parameters * - visited : cards 중 방문 기록용 * - numberOfCasesForNumberGroups : cards 중에서 `그룹`이 될 수 있는 경우의 수 * */ val visited = BooleanArray(cards.size){false} val numberOfCasesForNumberGroups = mutableListOf() /** * 설명 * - cards 중에서 방문하지 않은 index 추출 * -- 만약 모두 방문했다면(==-1) 모든 경우의 수를 확인했음으로 iteration 종료 * - 경우의 수 세팅(groupOfCa..
프로그래머스 :: 연습문제 :: 점찍기
풀이 import kotlin.math.* class 점찍기 { fun solution(k: Int, d: Int): Long { var count = 0L val dPowered = power(d) for(x in (0 .. d step k)){ count += getMaxYCoordinatesCounts(dPowered-power(x), k) } return count } /** * 설명 * - Math 패키지를 사용하고 싶지 않아서 만든 Math.pow 대체 함수 * - 문제에서 d 를 제곱하면 int 의 범위를 넘어감으로 Long 으로 반환하게끔 구현 * * 주의사항 * - `틀리게 된 함수` 사용시 `number * number`의 연산이 먼저 일어남으로 int 의 범위를 넘어가게되면 음수가 되..