전체 글
[프로그래머스][Level2][JAVA] 방금 그 곡
[문제 설명] https://programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr [풀이 과정] 꽤나 많이 삽질하고 해맨 문제다. 여기저기 다른 코드들을 참고하여 풀었다. 문제를 풀면서 포인트라고 생각한 부분들에 대해서 정리를 하겠다. 문제 조건에 다음과 같은 항목이 있다. 1. " 조건이 일치하는 음악이 여러 개일 때에는 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환한다. 재생된 시간도 같을 경우 먼저 입력된..
[JAVA] 10진수 n진수로 변환하기
10진수를 2진수로 변환하는 방법은 많이 알고들 있을 것이다. 10진수를 계속해서 2로 나누다가 몫이 0이 되면 그동안 나왔던 나머지들을 역순으로 나열하면 된다. 예를 들어 16을 2진수로 변환하는 방법은 다음과 같으며 2진수로 변환한 값은 10000(2)다. 그럼 8진수, 16진수 등 N진수들은 ? 방법은 똑같다. 대신 2진수는 계속 2로 나눠주었다면, n진수는 n으로 계속 나눠주면 된다. 1. 10진수 --> 8진수 10진수 126를 8진수로 변환해보자. 처음 126을 8로 나눈 몫은 15, 나머지는 6이다. 그 다음 위에서 나온 몫 15를 다시 8로 나누면 나머지가 7이고 몫이 0일때 나머지는 역순으로 나열한 176(8)이 126을 8진수로 변환한 값이다. ∴ 126(10) --> 176(8) 2...
[프로그래머스][Level2] 압축 - JAVA
[문제 설명] https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr [풀이 과정] 특별한 알고리즘을 이용하기보다는 그냥 문제에 주어진 규칙을 따라가며 풀었다. 단어가 사전에 들어가는 규칙이 있는데, 만약 "KAO" 라는 단어가 사전에 들어간다고 하면, "K" 와 "KA" 는 이미 사전에 존재한다. 때문에 "K"부터 뒤에 한 단어씩 늘리면서 사전에 있는지 탐색하다가 사전에 없는 단어 S까지 도달하면 아래 작업을 하면 된다. 1. 단어 S를..
LRU(Least Recently Used) 캐시 알고리즘
LRU 캐시 알고리즘 - Least Recently Used (가장 최근에 사용한) - 가장 오래전에 참조된, 덜 최근에 사용된 데이터를 내쫓는다. 최근에 참조된 것이 가까운 미래에 참조될 가능성이 높은 성질을 이용한 알고리즘이다. - JAVA에서는 Queue 자료구조를 사용하여 구현할 수 있다. 실행 과정 1) data : 1 , 캐시 비어있음. 캐시에 1 삽입 2) data : 2, 캐시 공간 있음. 캐시에 2 삽입 3) data : 3, 캐시 공간 있음. 캐시에 3 삽입 4) data : 4, 캐시 공간 있음. 캐시에 4 삽입 5) data : 1, 캐시에 이미 데이터 1이 있음. continue 6) data : 2, 캐시에 이미 데이터 2가 있음. continue 7) data : 5, 캐시가 ..
Spring-Cloud-Data-Flow(SCDF)구축해보기
Spring-Cloud-Data-Flow(SCDF)란? Spring Cloud Data Flow 는 Cloud Foundry 및 Kubernetes에서 스트리밍 및 일괄 데이터 처리 파이프라인을 구축하기 위한 마이크로서비스 기반 툴킷 SCDF 특징 웹 대시보드, REST API, JAVA DSL, console shell 다양한 인터페이스로 제공 로컬, Cloud Foundry 및 Kubernetes 위에서 설치 및 운영 가능 스케줄링 기능은 Cloud Foundry 및 Kubernetes에서만 사용 가능, 일반 서버에서는 X SCDF의 상태 및 데이터 관리는 관계형 DB에서 관리 기본적으로 h2 DB와 연동되지만 실행시 데이터가 초기화 되기 때문에 운영에서 사용시 MySQL, MariaDB와 같은 관계..
[JAVA] 문자열이 영어로만 이루어져 있는지 판별하기(Pattern.mathces())
문자열이 알파벳으로만 이루어져있는지 확인할 때 사용한다. 숫자, 한글, 특수문자 등이 한글자라도 섞여있으면 false를 반환한다. import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String s1 = "chocholog"; System.out.println(Pattern.matches("^[a-zA-Z]*$", s1)); String s2 = "chocho_log"; System.out.println(Pattern.matches("^[a-zA-Z]*$", s2)); } // true false
[JAVA] 아스키(ASCII) 코드 값 구하기
코딩 테스트 연습을 하다보면 종종 아스키 코드 값을 이용하는 경우가 생긴다. 실무에서는 써본적이 없어서 잘 모르겠다. 필요 할 때마다 매번 구글링을 하니 귀찮고 완전히 내것이 되는 것 같지가 않다. 그래서 이번엔 JAVA로 아스키 코드 구하는 법을 정리해보려고 한다. 아스키 코드표 1. 문자 --> 아스키 코드 public static void main(String[] args) { // 문자 --> 아스키 코드 char c = 'A'; System.out.println((int)c); boolean isSame = c==65 ? true : false; System.out.println(isSame); } // 65 true 2. 아스키 코드 --> 문자 public static void main(St..
[프로그래머스][Level2][JAVA] 영어 끝말잇기
[문제 설명] https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0] programmers.co.kr [풀이 과정] 풀이시간 : 22:35 ~ 23:35 (딱 한시간) (길다 길어...줄여라 시간..) 끝말잇기에서 탈락하는 경우는 3가지다. 1. 한 글자인 ..
[JAVA] 최대 공약수(GCD), 최소 공배수(LCM) 구하기
최대 공약수 구하는 방법 1. 숫자가 2개인 경우 1) 두 수를 공약수로 계속 나눈다. 2) 공약수로 나눈 몫이 서로소가 되면 stop 3) 왼쪽 공약수를 모두 곱한다. ∴ 60 과 48의 최대 공약수 : 2 ✕ 2 ✕ 3 = 12 2. 숫자가 3개 이상인 경우 - 코드에서 배열이 매개변수로 주어지는 경우 1. 모든 수를 동시에 반드시 나눌수 있는 수로 나눈다. 2. 더이상 동시에 나눌 수 없으면 stop 3. 왼쪽 공약수를 모두 곱한다. ∴ 60, 48, 40 의 최대공약수 : 2 ✕ 2 = 4 최소 공배수 구하는 방법 1. 숫자가 2개인 경우 1) 두 수의 공약수로 나눈 몫이 서로소가 될 때까지 나눈다. 2) 왼쪽 공약수들과 아래 서로소까지 모두 곱한다. ∴ 60 과 48의 최소 공배수 : 2 ✕ 2..