전체 글 296

(2021카카오) 메뉴 리뉴얼 Java

이 문제의 가장 큰 포인트는 조합이다. 1. 조합 각 문자열에 대하여 나올수 있는 조합을 구하는데, 그 조합을 nCr이라고 할때, r값은 course[i]로 주어진 것이고, n값은 각 코스요리의 길이 이므로 orders[i].length로 주어진다. 2. 알파벳순 정렬 고려하는 새로운 코스요리 세트에 대하여, AB와 BA는 같은 것이므로 오름차순 정렬을 시행한다. 이는 map에 집어넣을때부터 비교연산을 하는 모든 경우에서 필요하므로 미리 정렬 시켜야한다. 실패코드 더보기 테스트케이스 3만 성공한다. import java.util.*; class Solution { private static Map map = new HashMap(); static void print(String arr, boolean[]..

(2020카카오) 기둥과 보 설치 Java

본인은 테스트케이스는 통과하는 코드를 만들었지만, 채점시 모두 틀리게 나오는 코드였다. 더보기 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; class Solution { public int[][] solution(int n, int[][] build_frame) { int[][] grid = new int[n+1][n+1]; for(int a[] : grid) { Arrays.fill(a, -1);//-1로 초기화 } for (int i = 0; i < build_frame.length; i++) { int x = build_frame[i][0];//[0] =x int y = build_frame[i][1];/..

(2018카카오) 자물쇠와 열쇠 Java

Lock의 약 3배크기의 그리드를 준비한다. Lock을 그리드의 중앙으로 복사한다. Key값을 각각의 Lock의 꼭짓점부터 순회한다. 더불어 Key를 회전(rotate)시키면서 탐색한다. 탐색할시에 Lock위치에 해당하는 인덱스의 값이 모두 1이어야 Lock이 딱 맞는걸로 판별된다. 위의 그림처럼 키의값이 겹치면 1이 아닌것을 return하게 된다. dfs방식 : boolean isOk값을 true냐 false냐로 판단한다. public void dfs(int[][]key, int [][] lock, int cnt) { check(key, lock, 0, 0); if(isOk) return; if(cnt >= 4) return; int[][] temp = rotate(key);//키회전시킨걸로 탐색 df..

JDBC, JPA/Hibernate, Mybatis의 차이

백엔드 로드맵을 보다가 Mybatis, Hibernate의 차이점에 대해 검색을 하다가 공부하게 되었다. Persistence FrameworkJDBC : 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동을 보장한다. Persistence Framework는 SQL Mapper와 ORM으로 나눌 수 있다.아래 참고Ex) JPA, Hibernate, Mybatis 등 # SQL Mapper SQL Object 필드 SQL Mapper는 SQL 문장으로 직접 데이터베이스 데이터를 다룬다. 즉, SQL Mapper는 SQL을 명시해줘야 한다. Ex) Mybatis, JdbcTempletes 등 # ORM(Object-Relationa..

[Java] 자바 진수변환 알고리즘

10진수->2/8/16진수 Integer.toBinaryString(바꿀문자열); Integer.toOctalString(바꿀문자열); Integer.toHexString(바꿀문자열); int i = 127; String binaryString = Integer.toBinaryString(i); //2진수 String octalString = Integer.toOctalString(i); //8진수 String hexString = Integer.toHexString(i); //16진수 System.out.println(binaryString); //1111111 System.out.println(octalString); //177 System.out.println(hexString); //7f 2/8/..

(2018카카오) n진수 게임 Java

실제로 존재하는 술게임이다..;; 진수변환에 관한 문제이다. 10~15는 각각 대문자 A~F로 출력한다. String[] alphaForMoreThanTen = {"A","B","C","D","E","F"}; 위와 같이 ABCDEF 사전을 만들어놓고, 아래와 같이 나머지값이 10~15인 값에 대하여 대체텍스트를 대입한다. if(remain>=10&&remain=10&&remain2/8/16진수 Integer.toBinaryString(바꿀문자열); Integer.toOctalString(바꿀문자열); Integer.toHexString(바꿀문자열); int i = 127; String binaryString = Integer.toBinaryString(i); //2진수 Strin.. skmouse.tis..

(2018카카오) 추석 트래픽 Java

Date의 형식을 맞춰서 비교하는 방법은 아래 글을 참고하면된다. readystory.tistory.com/55 [JAVA] Date to String / String to Date 변환(SimpleDateFormat) 프로그래밍을 하다 보면 시간이나 날짜를 사용할 일이 많은데, 아마 대부분 Date 클래스를 사용했을 겁니다. 예를 들어 현재 시간을 가져오는 코드는 다음과 같습니다. import java.util.Date; public class readystory.tistory.com 단, parse() 메소드의 경우 ParseException을 던져주기 때문에 그에 대한 처리가 필요함. 중복for문을 이용한 방법 import java.text.ParseException; import java.text..

(2018카카오) 압축 LZW 알고리즘 Java

LZW(Lempel–Ziv–Welch) 압축 : LZW 압축은 1983년 발표된 알고리즘으로, 이미지 파일 포맷인 GIF 등 다양한 응용에서 사용되었다. String 문자열 탐색 기반 문제이다. dictionary를 map으로 만들어서 실행한다. Ascii코드의 알파벳 대문자 값을 이용하여 dictionary를 생성했다. 아래는 필자의 코드이다. import java.util.ArrayList; import java.util.HashMap; import java.util.Map; class Solution { public int[] solution(String msg) { ArrayList list = new ArrayList(); int num = 1;//add index Map map = new Ha..

(2018카카오) 후보키 Java

일반적인 탐색문제이다..DFS방식도 있지만 완전탐색이 더 실행속도 측면에서 빨랐다. 하지만 Bit Mask방식으로 For문으로 경우의수를 나눠서 풀 수 있다. BitMask방식은 이진법을 이용하여 0=000(2) ~ 15=111(2) 으로 001, 010, 011, ... , 110, 111 방식으로 https://keepgoing0328.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-2019-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EA%B3%B5%EC%B1%84-%ED%9B%84%EB%B3%B4%ED%82%A4-%EC%9E%90%EB%B0%94-bitmask [ 프로그래머스 - 2019 카카오 공채 ] 후보..

(2018카카오) 캐시 LRU(Least Recently Used) 알고리즘 Java

위 문제는 LRU(Least Recently Used)알고리즘을 이용한 방법이다. 대표적인 LRU 알고리즘의 문제로 꼽힌다. 사진출처: gomguard.tistory.com/115 페이지 교체 알고리즘 - LRU 페이지 교체 알고리즘 사회의 자원은 한정되어 있고 그 한정된 자원을 효율적으로 사용하기 위해 각종 법과 규칙이 존재합니다. 눈에 확연히 보이지 않아 무한할 것만 같은 컴퓨터 자원도 사실 gomguard.tistory.com 해쉬맵을 이용한 코드다. 코드는 길지만, 실행속도는 빠른편이다. 여기서도 toLowerCase()로 소문자로 모두 변환해주었다. 각 상황을 if문에 따라 나누었는데, cacheSize=0인경우를 고려하지않았었는데, 개인적으로 문제를 꼼꼼히 읽어야겠다는 생각을 했다. impor..