기본 콘텐츠로 건너뛰기

글

코딩 테스트 - 두 큐 합 같게 만들기

package programmers ; import java.util.Arrays ; import java.util.LinkedList ; import java.util.Queue ; public class 두 _ 큐 _ 합 _ 같게 _ 만들기 _230312 { public static void main (String[] args) { int [] q1 = { 3 , 2 , 7 , 2 } ; int [] q2 = { 4 , 6 , 5 , 1 } ; System. out .println( solution (q1 , q2)) ; } public static int solution ( int [] queue1 , int [] queue2) { int answer = 0 ; Queue<Integer> 진짜큐 1 = new LinkedList<>() ; Queue<Integer> 진짜큐 2 = new LinkedList<>() ; int length = queue1. length ; // 어차피 길이 똑같으니까 큐 1 로 한다 long 큐 1 합 = Arrays. stream (queue1).sum() ; long 큐 2 합 = Arrays. stream (queue2).sum() ; long 총합 = 큐 1 합 + 큐 2 합 ; long 반값 = 0 ; // 두 큐의 합이 같지 않을 경우부터 확인 if ( 총합 % 2 != 0 ){ return - 1 ; } 반값 = 총합 / 2 ; // 더해서 반이니까 총합의 반값이 해당되면 다른건 알아서 따라옴 for ( int i = 0 ; i < length ; i++) { 진짜큐 1.add...

코딩 테스트 - 2개 이하로 다른 비트

package programmers ; public class 두개 _ 이하로 _ 다른 _ 비트 _230311 { public long [] solution_ 쩌는코드 ( long [] numbers) { long [] answer = numbers.clone() ; for ( int i = 0 ; i< answer. length ; i++){ answer[i]++ ; //x 보다 크고니까 +1 을 해줌 answer[i] += (answer[i]^numbers[i])>> 2 ; // 오 ... shift... 2 개 shift 해주면 // 비트 차이 1~2 개 나는 값 중에 제일 작은 값이 됨 } return answer ; } /* 제작자의 댓글 ... Super user do! answer+1 과 answer 을 xor(^ 연산자 ) 하면 나오는 수가 같게 ? 만드는 수가 되는데 여기서 2 개 달라도 된다고 하니 쉬프트로 밀어서 조건을 맞춘다고 해야하나 ... 그래요 ... Super user do! ― 2021.10.10 21:21 Super user do! 블로그 돌아다니다 제 코드 보고 궁금해 하시는 분 있어서 적어보는데 우선 이 코드 만들게 된 계기가 1~20 까지 수기로 답을 찾고 답과 1~20 의 숫자랑 비교해서 규칙을 찾아서 수학적으로 만든 코드입니다 . 그러다 보니 C,C++,java,Python 등 모든 언어에서 작동 가능하다 예상합니다 . 그 예상을 뒷받침 해주는데 게가 실제로 C,C#,java,python 에 이 풀이법으로 가장 먼저 제출 했으니까요 ... C++ 은 역시 고수들이 많아서 저보다 먼저 제출한 사람이 있었지만요 ...( 스위프트나 go 쓸줄 알았음 그것도 해서 가장 먼저 ...

코딩 테스트 - 삼각 달팽이

package programmers ; public class 삼각 _ 달팽이 _230310 { public static int [] solution ( int n) { // % 3 이 포인트임 ! /* 달팽이 : 데굴데굴 모양 만들기 00 11 12 21 22 23 31 32 33 34 */ int len = (n *(n+ 1 ))/ 2 ; int [] answer = new int [len] ; int [][] 삼각형 = new int [n][n] ; int x = - 1 ; // 앞 int y = 0 ; // 뒤 int cnt = 1 ; // 0 부터가 아니라서 1 부터 시작 for ( int i = 0 ; i < n ; i++) { for ( int j = i ; j < n ; j++) { if (i % 3 == 0 ) { // 대각선 아래 x++ ; } else if (i % 3 == 1 ) { // 가로 y++ ; } else if (i % 3 == 2 ) { // 대각선 위 x-- ; y-- ; } 삼각형 [x][y] = cnt++ ; // 값 추가해서 저장 } } int counter = 0 ; for ( int i = 0 ; i < n ; i...

개발 공부 - IntelliJ 환경에서 Cannot load driver class 관련 오류 시 해결 방법

application.properties에 mysql 관련 오류가 build.gradle을 아무리 수정해도 안 고쳐져서 찾아보았다. 해결책 : gradle 탭에서 맨 앞의 Reload All Gradle Projects 를 하면 해결된다. 이것임을 인지하기까지 수많은 노오력이 있었음... 역시 설정이 70%정도는 되는 듯 합니다... 이제 드디어 save 메소드가 호출되는 D. 참조 : https://velog.io/@godkimchichi/Spring-Boot-Cannot-load-driver-class-com.mysql.cj.jdbc.Driver

코딩 테스트 - 거스름돈

package programmers ; import java.util.Arrays ; public class 거스름돈 _230308 { public int solution ( int n , int [] money) { int [] answer = new int [ 100001 ] ; answer[ 0 ] = 1 ; for ( int i : money) { for ( int j = i ; j <= n ; j++) { answer[j] += answer[j-i] ; } } return answer[n] ; } // 이것과 유사한 public int solution2 ( int total , int [] coin) { int [] dp= new int [total+ 1 ] ; Arrays. sort (coin) ; dp[ 0 ]= 1 ; for ( int i= 0 ; i<coin. length ; i++){ for ( int j=coin[i] ; j<=total ; j++){ dp[j]+=dp[j-coin[i]] ; } } return dp[total] ; } }

코딩 테스트 - 보호소에서 중성화한 동물

SELECT ANIMAL_INS.ANIMAL_ID , ANIMAL_INS.ANIMAL_TYPE , ANIMAL_INS.NAME FROM ANIMAL_INS JOIN ANIMAL_OUTS WHERE ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID AND ANIMAL_INS.SEX_UPON_INTAKE != ANIMAL_OUTS.SEX_UPON_OUTCOME ORDER BY ANIMAL_INS.ANIMAL_ID -- 동물 보호소에서 입양 보낼 때는 중성화 되지 않았음 -- 동물 보호소에서 입양 보낼 때에는 중성화 됨 -- 따라서 상태가 변경된 것이므로 중성화 됨 -- 이미 없는 애 -> 그것을 부활 시킬 수 없음 그것... 동물은 그것이 실종되다

코딩 테스트 - 징검다리

package programmers ; import java.util.Arrays ; public class 징검다리 _230307 { public static void main (String[] args) { int 도착지점 = 25 ; int [] 돌 = { 2 , 14 , 11 , 21 , 17 } ; int 제거해야하는바위의수 = 2 ; System. out .println( solution ( 도착지점 , 돌 , 제거해야하는바위의수 )) ; } public static int solution ( int distance , int [] rocks , int n) { Arrays. sort (rocks) ; //n 개 제거를 할 건데 // 각 지점 사이 거리의 최소값 중 가장 큰 값 리턴하도록 함수 작성 // 이분탐색 int answer = 0 ; int 왼쪽 = 0 ; int 오른쪽 = distance ; while ( 왼쪽 <= 오른쪽 ) { int 중간 = ( 왼쪽 + 오른쪽 ) / 2 ; int 돌없애기 = 0 ; int 없앨라그런돌 = 0 ; for ( int i = 0 ; i < rocks. length ; i++) { if (rocks[i] - 없앨라그런돌 < 중간 ){ 돌없애기 ++ ; } else { 없앨라그런돌 = rocks[i] ; } } if (distance - rocks[rocks. length - 1 ] < ...

코딩 테스트 - 가사 검색

package programmers ; import java.util.Arrays ; import java.util.HashMap ; import java.util.Map ; public class 가사 _ 검색 _230306 { /* [ 본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다 .] 친구들로부터 천재 프로그래머로 불리는 " 프로도 " 는 음악을 하는 친구로부터 자신이 좋아하는 노래 가사에 사용된 단어들 중에 특정 키워드가 몇 개 포함되어 있는지 궁금하니 프로그램으로 개발해 달라는 제안을 받았습니다 . 그 제안 사항 중 , 키워드는 와일드카드 문자중 하나인 '?' 가 포함된 패턴 형태의 문자열을 뜻합니다 . 와일드카드 문자인 '?' 는 글자 하나를 의미하며 , 어떤 문자에도 매치된다고 가정합니다 . 예를 들어 "fro??" 는 "frodo", "front", "frost" 등에 매치되지만 "frame", "frozen" 에는 매치되지 않습니다 . 가사에 사용된 모든 단어들이 담긴 배열 words 와 찾고자 하는 키워드가 담긴 배열 queries 가 주어질 때 , 각 키워드 별로 매치된 단어가 몇 개인지 순서대로 배열에 담아 반환하도록 solution 함수를 완성해 주세요 . 가사 단어 제한사항 words 의 길이 ( 가사 단어의 개수 ) 는 2 이상 100,000 이하입니다 . 각 가사 단어의 길이는 1 이상 10,000 이하로 빈 문자열인 경우는 없습니다 . 전체 가사 단어 길이의 합은 2 이상 1,000,000 이하입니다 . 가사에 동일 단어가 여러 번 나올 경우 중복을 제거하고 words 에는 하나로만 제공됩니다 . 각 가사 단어는 오직 알파벳 소...

개발 공부 - 인텔리제이 환경에서 스프링 부트 프로젝트 생성 후 사용하기

 집에 조성해 놓은 환경을 회사용과 동기화한다. 인텔리제이로 부트를 조성하면서 정리 목적으로 간단하게 기재한다. 0) 인텔리 제이를 일단 설치한다.  집에서 공부용으로는 현재 대학생이라 무료로 사용할 수 있는 것으로 설치했다.  1) 새 프로젝트를 생성한다. 스프링 이니셜라이저로 생성하면 된다.  2) 종속성도 추가해 준다. 기본 설정이 3.0.4 버전이길래 일단 그냥 한다. 나중에 다 바꿀 수 있는 것... * 사실 이것을 스프링 이니셜라이저 사이트에서 생성해도 된다. 이것이 생성 사이트 인텔리제이에서 설정한거랑 똑같이 쓰고 Generate 해서 압축 해지하고 프로젝트에 넣으면 된다. 그러나 IDE 인데 그냥 위 방식으로 추천한다... 어쨌든 이 상태에서도 웹이 띄워지므로 실행해 본다. 3) 웹 띄우기 전에 이 설정을 바꿔주는 게 낫다고 한다. preferences -> Gradle -> 이렇게 빌드 및 실행을 인텔리제이 쪽으로 바꿔준다. 4) 실행은 그냥 실행 하면 된다. 5) localhost:8080 으로 띄워서 이게 뜨면 정상이다. 6) 이런 index 페이지라도 추가하면 정상으로 뜬다. 서버는 재기동해야 한다. 7) 이걸 빌드해서 jar 파일로 만들수 있다. 8) 빌드된 파일은 이 build -> libs 경로에 있다.   9) java -jar 해서 실행하면 된다. 이렇게 하면 간단하게 개발 환경이 조성된 것이다. 인텔리제이의 boot 설정이 정말 간단하여 1분 내외로 할 수 있다. 간단한 설정을 추가해보며 리마인드 목적으로 공부해본다.

코딩 테스트 - 쿠키 구입

package programmers ; public class 쿠키 _ 구입 _230305 { public static void main (String[] args) { /* 과자바구니를 1 번부터 N 번까지 내놨음 첫째아들 : l~m 번 바구니 둘째아들 : m+1 ~ r 번 바구니 를 사줄건데 과자 수가 같아야 한다 . 조건에 맞게 과자를 살 때 , 한명의 아들에게 줄 수 있는 가장 많은 과자 수가 몇갠지 세보자 . 조건에 맞지 않으면 아예 안 삼 */ int [] 과자 = { 1 , 1 , 2 , 3 } ; System. out .println( solution ( 과자 )) ; } public static int solution ( int [] cookie) { int answer = 0 ; //i 가 중간값인 것으로 생각할 것 . for ( int i = 0 ; i < cookie. length - 1 ; i++){ int 왼쪽 = i ; int 오른쪽 = i + 1 ; int 왼쪽쿠키개수 = cookie[i] ; int 오른쪽쿠키개수 = cookie[i+ 1 ] ; while ( true ){ //2 번 과정 if ( 왼쪽쿠키개수 == 오른쪽쿠키개수 ){ answer = Math. max (answer , 오른쪽쿠키개수 ) ; if (++ 오른쪽 < cookie. length ){ 오른쪽쿠키개수 += cookie[ 오른쪽 ] ; } ...