전체 글 104

[JAVA] 프로그래머스 : 타일 장식물 (코딩테스트 고득점 kit > 동적계획법(Dynamic Programming))

https://programmers.co.kr/learn/courses/30/lessons/43104#qna 코딩테스트 연습 - 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개�� programmers.co.kr 동적계획법 문제를 풀기위해서는 큰 문제를 작은 문제로 나누는 과정이 필요함 이 과정을 통해 점화식을 세우는게 중요함 그리고 메모제이션을 해서 시간을 줄이는게 중요함 =>값을 저장해놓음으로써 함수 호출의 시간을 단축시킬수 있으므로 메모제이션 방법으로는 아래와 같은 방법이 있음 1. 반복문을 이용하여 미리 값들에 대한 계산을 다 해서 저장하는 방법 ..

[JAVA] 프로그래머스 : 소수 찾기 (코딩테스트 고득점 kit > 완전탐색)

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 � programmers.co.kr 재귀호출을 이용하여 완전탐색하였음 해결 방안 1. 주어진 Numbers를 이용하여 만들 수 있는 전체 숫자의 경우를 구함 이 때, 만들어지는 숫자는 순열로 1~N자리의 숫자를 생성할 수 있으므로 nP1 ~ nPn 까지의 전체 숫자를 구해줌 2. 전체의 숫자를 구하면서 nPr의 r만큼의 숫자가 누적되어 만들어지면 중복 판단 및 소수 판단을 하고 ..

[JAVA] 프로그래머스 : 여행 경로 (코딩테스트 고득점 kit > 깊이/너비 우선 탐색(DFS/BFS))

https://programmers.co.kr/learn/courses/30/lessons/43164# 코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr DFS로 구현함 해결 방안 1. DFS를 이용하여 전체 여행 경로의 경우를 구하며 한가지의 경로를 String형의 route에 누적한 뒤 한가지 경로가 다 누적되면 routes에 추가함 => 나중에 정렬을 쉽게 이용하기 위하여 String 값으로 저장 2. 목적지가 2가지 이상일 경우 알파벳 순이 되어야하므로 sort 정렬을 이용하여 routes를 정렬함 3. 정렬된 routes.g..

[JAVA] 프로그래머스 : 네트워크 (코딩테스트 고득점 kit > 깊이/너비 우선 탐색(DFS/BFS))

https://programmers.co.kr/learn/courses/30/lessons/43162?language=java 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있�� programmers.co.kr 문제 이해 문제의 예시를 보면 왼쪽의 그림은 네트워크가 2개인 경우이고 오른쪽의 그림은 네트워크가 1개인 경우임 즉, n개의 컴퓨터들이 있고 연결되어있는 컴퓨터들이 각각의 네트워크임 따라서 DFS를 통해 연결되어있는 컴퓨터들끼리 네트워크를 구성하므로 네트워크의 갯수를 구해주는 문제임 해결 방안 1. solution() 에서 전체..

[JAVA] 프로그래머스 : 타켓 넘버 (코딩테스트 고득점 kit > 깊이/너비 우선 탐색(DFS/BFS))

https://programmers.co.kr/learn/courses/30/lessons/43165?language=java 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 해결 방안 1. number 배열의 숫자를 계속 빼거나 더하는 두 가지 경우로 나눠져서 DFS를 이용하여 풀었음 2. DFS index가 numbers.length 까지 오게 되면 numbers에 쌓인 값들을 다 더해 sum을 구하고 그 sum이 target과 같으면 answer를 +..

[JAVA] 프로그래머스 : 입국심사 (코딩테스트 고득점 kit > 이분탐색)

https://programmers.co.kr/learn/courses/30/lessons/43238?language=java 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 � programmers.co.kr 이분탐색을 응용하여 문제를 구현하였음 이분탐색 알고리즘 코드 int BinarySearch(int arr[], int target) { int start = 0; int end = arr.length - 1; int mid; while(start target) end = mid - 1; else start = mid + 1; } ret..

이클립스(Eclipse)에서 Java를 이용해 데스크톱 응용 프로그램 개발시 GUI 사용을 위한 환경 구성 (e(fx)lipse 플러그인, SceneBuilder 사용)

더보기 2019.07.24에 작성한 글임 준비물 JDK, Eclipse 등을 이미 설치하였고 환경 구성까지 완료되어있다고 가정함 1. e(fx)clipse (3.5.0) 플러그인 설치 Java를 이용하여 데스크톱 응용 프로그램을 개발할 때 GUI 라이브러리인 JavaFX를 사용하기 위해 e(fx)clipse 플러그인을 설치 Help > Eclipse Marketplace > e(fx)clipse 설치 2. SceneBuilder 설치 GUI 작업을 위해 Oracle javafx SceneBuilder 2.0 설치 다운로드: https://www.oracle.com/technetwork/java/javafxscenebuilder-1x-archive-2199384.html 3. 정상구동 확인 이클립스에서 J..

[JAVA] 프로그래머스 : 가장 큰 수 (코딩테스트 고득점 kit > 정렬)

https://programmers.co.kr/learn/courses/30/lessons/42746?language=java 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr Comparator 인터페이스에 대한 지식이 있어야 문제를 쉽게 접근 가능할 수 있을 것이라고 생각함 정렬을 위한 인터페이스로 Comparable과 Comparator가 있는데 Comparable 인터페이스는 보통 객체의 기본적이고 고정된 정렬을 위해 사용하며 Comp..

[JAVA] 프로그래머스 : 예산 (코딩테스트 고득점 kit > 이분탐색)

https://programmers.co.kr/learn/courses/30/lessons/43237?language=java 코딩테스트 연습 - 예산 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그�� programmers.co.kr 이분탐색을 응용하여 문제를 구현하였음 이분탐색 알고리즘 코드 int BinarySearch(int arr[], int target) { int start = 0; int end = arr.length - 1; int mid; while(start target) end = mid - 1; else start = mid + 1; } retur..

[JAVA] 프로그래머스 : 숫자 야구 (코딩테스트 고득점 kit > 완전탐색)

https://programmers.co.kr/learn/courses/30/lessons/42841 코딩테스트 연습 - 숫자 야구 [[123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1]] 2 programmers.co.kr 해결 방안 1. 전체 경우는 (000~999)라고 생각하였으며 그 중 서로 다른 3자리 숫자 이므로 (123~987)로 범위를 줄일 수 있었음 또한 같은 숫자와 0이 들어간 숫자가 나온 경우 continue 해줘서 가능한 전체 숫자를 정해줌 (위와 같이 전체 경우가 주어짐) 2. 전체 경우의 수를 돌면서 baseball 이차원 배열에 담긴 전체 수와 비교하여 strike 수와 ball 수가 모두 같으면 가능한 답이 되므로 answer++ 해줌 =..