Algorithm

    Programmers :: Summer/Winter Coding(2019) :: 멀쩡한 사각형

    풀이 package programmers.summerwinter import kotlin.math.ceil import kotlin.math.floor /** * 설명 * - 프로그래머스 > Summer/Winter Coding(2019) > 멀쩡한 사각형 * - 경로 : https://school.programmers.co.kr/learn/courses/30/lessons/62048 * * */ class FineSquare { /** * 설명 * - 문제에서는 왼쪽위에서 아래 대각선으로 가로지르는데 이는 왼쪽 아래 즉,[0,0](좌표)에서 시작해서 오른쪽 위까지 가로지르는 것과 같은 결과값을 가진다. * - 기울기: h/w, 인 1차 방정식 그래프를 그릴 수 있다는 것을 알 수 있다. * - 그림을 ..

    Programmers 동적계획법 :: 레벨3 :: N 으로 표현

    풀이 /** * 설명 * - 프로그래머스 > 고득점 kit > 동적계획법 > level3 > N으로 표현 * - 경로 : https://school.programmers.co.kr/learn/courses/30/lessons/42895?language=kotlin * * */ class ExpressedByN { fun solution(N: Int, number: Int): Int{ // 초기 접근 // var answer = 0 // // if(N == number){ // return 1; // } // // val oneTimesUsed = listOf(5) // val twoTimesUsed = listOf(55, 5+5, 5-5, 5*5, 5/5) // val threeTimesUsed = li..

    Programmers DFS/BFS :: 레벨 2 :: 게임 맵 최단거리

    풀이 package programmers.highscorekit; import javax.xml.soap.Node; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; /** * 설명 * - 프로그래머스 > 고득점 kit > 깊이/너비 우선 탐색(DFS/BFS) > level2 > 게임 맵 최단거리 * - 경로 : https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=java * * */ public class ShortestWayInGa..

    Programmers 완전탐색 :: 레벨2 :: 카펫

    풀이 /** * 설명 * - 프로그래머스 > 고득점 kit > 완전탐색 > level2 > 카펫 * - 경로 : https://school.programmers.co.kr/learn/courses/30/lessons/43238 * * */ class Carpet { fun solution(brown: Int, yellow: Int): IntArray{ /** * 로직설명 * - 내부 사각형(노랑타일)의 가로길이를 w, 세로길이를 h 라고 하자. * * - #1 첫번째 조건 * -- 2w + 2h + 4(꼭지점 타일 갯수) = brown * * - #2 두번째 조건 * -- w*h = yellow * * */ // 2w + 2h + 4 = brown // w * h = yellow var yellowWid..

    Programmers 이분탐색 :: 레벨3 :: 입국심사

    풀이 class Immigration { fun solution(n: Int, times: IntArray): Long{ var answer: Long = 0 times.sort() var start: Long = 0 var end: Long = times.last().toLong() * n /** * 특이점 * - while(start < end) 조건은 왜 불가능할까? * * 예를 통해 알아보자 * n : 6 * times : [7,10] * 만약 start : 28, end: 31 이라고 할때를 가정해보자 * start: 28, end: 31 * mid: 29 * end

    Programmers 스택/큐::레벨2::프린터

    풀이 import java.util.* class Solution { fun solution(priorities: IntArray, location: Int): Int { val operationQ: Queue = LinkedList() val standByQ: Queue = LinkedList(priorities.mapIndexed { index, priorityValue -> PrintTarget(index, priorityValue) }) /** 설명 - operationQ(실제 실행 대기열) 와 standByQ(실행 하기전 대기열) 두개의 큐를 선언한다. - 문제의 조건에 맞추어 standByQ 에서 operationQ 로 값을 이동시킨다. */ while(standByQ.isNotEmpty())..

    Programmers :: 해시 전화 번호 목록 레벨2

    풀이 import java.util.Arrays; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; Arrays.sort(phone_book); for(int i=0;i< phone_book.length;i++){ if(i==phone_book.length-1) break; if(phone_book[i+1].startsWith(phone_book[i])){ answer = false; break; } } return answer; } } 출처 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우,..

    Programmers :: 정렬 가장 큰 수 레벨2

    풀이 class Solution { fun solution(numbers: IntArray): String { if(numbers.contentEquals(IntArray(numbers.size){0})) return "0" return numbers .map { it.toString().repeat(3) } .sortedByDescending { it } .map { it.slice(IntRange(0,it.length/3-1)) } .joinToString("") } } 출처 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2..

    Programmers :: Heap(힙) 더 맵게 레벨2

    풀이 import java.util.Arrays; import java.util.PriorityQueue; import java.util.stream.Collectors; class Solution{ public int solution(int[] scoville, int K){ int count = 0; int firstLowest; int secondLowest; int combinedTwoLowestFoods; PriorityQueue priorityQueueLowest = new PriorityQueue(Arrays.stream(scoville).boxed().collect(Collectors.toList())); while(true){ if(priorityQueueLowest.size() == 1..

    Programmers :: DFS(깊이 우선 탐색법) 네트워크 레벨 3

    풀이 import java.util.* class Solution { fun solution(n: Int, computers: Array): Int { val graph = Graph(n, computers) graph.buildEdge( graph.computersToRelationList() ) return graph.getNetworkSize() } } class Graph(n: Int, computers: Array) { val N: Int = n val adj = Array(N) { LinkedList() } val computers = computers fun buildEdge(relationList: List) { relationList.forEach { relation -> this.adj..

728x90