자바 97

[프로그래머스] N으로 표현 - java

문제 설명 1. 숫자 N과 number이 주어진다. 2. number을 N을 사용해서 만들 수 있는 경우가 여러 가지 있는데, 이 중 최소횟수를 구한다. 3. 8회 초과이면 -1을 return한다. 풀이 과정 1. DP문제인데 나는 DFS랑 최적해를 섞어서 푼것같다.... DP만으로 푸는 방법은 모르겠음...... 2. N을 통해 +-/*를 해서 구할 수 있는 모든 방법을 구한다. 3. 위의 process를 전체 문자열의 길이만큼 진행하면 구할 수 있다. 4. 그리고 N뿐만 아니라 NN NNN 이런것도 가능하다. 참고로 이경우 count는 당연히 하나 늘어날 것이다. 5. 마지막으로 중요한게 8회 초과이면 -1을 리턴하도록 만들면 된다. tip ) 그리고 시간복잡도를 조금이나마 줄이는 방법인데, 어차피 ..

알고리즘 공부 2021.09.02

프로그래머스 위클리 챌린지 5주차 - java

문제 설명 1. 'A' 'E' 'I' 'O' 'I' 다섯글자로 단어를 만들수 있다. 2. 단어 길이는 5개 이하이며, A AA AAA AAAA AAAAA AAAAE ... 이런 순서로 진행된다. 3. 단어가 주어지면, 이게 몇번째 단어인지 return하면 된다. 풀이 과정 1. 문제의 테스트 케이스를 보면 알겠지만, 문자들에 대해 완전탐색을 하나하나 진행하면 절대 안될것이다...안해봤지만 그럴것같음. 2. A로 시작하면 A, AA ..... E로 시작하면 E, EA ....... 이렇게 진행되는데, 이를 통해 수식을 통해 구할 수 있다고 유추 가능하다. 3. A는 1이고, I는 1563인데 이를 통해 E는 782이고 각각 시작하는 문자를 기준으로 781의 간격이 떨어져 있다. 4. A,E,I,O,U 5글..

[프로그래머스] 정수 삼각형 - java

문제 설명 1. 삼각형이 주어진다. 2. 맨 아래까지 삼각형을 하나씩 더해가면서 그 최대값을 구한다. 3. 맨 아래줄에서 최대값을 구해주면 된다. 풀이 과정 1. 간단한 DP 문제이다....이게 왜 level3일까?? 2. 각 삼각형 위치에서 가장 큰 합을 구하는 배열을 만들어 준다. 3. 맨 왼쪽은 무조건 다 왼쪽으로 이동해야 하므로 0, 0부분은 싹다 현재 삼각형 크기와 위의 크기를 더해주면 된다. 7 - 3 - 8 - 2 - 4 (이렇게 왼쪽으로 가는거는 쭉쭉 더해주면 될것이다. 다른 방법은 없다.) 4. n번째 위치의 최대값은 그보다 윗 칸의 왼쪽에 있는 값, 오른쪽에 있는 값중 큰거를 구하면 된다. 5. 이제 맨 아래 위치의 값들 중 최대값을 return하면 된다. 코드 class Solutio..

알고리즘 공부 2021.08.26

프로그래머스 위클리 챌린지 4주차 - java

저번주와 비교도 안되게 쉬운 문제가 나왔다...뭐지..... 문제 설명 1. table로 맨 처음 노드에는 직무가, 이후 노드부터는 그 직무가 선호하는 언어가 주어진다. 2. table의 선호하는 언어의 점수는 table전체 언어의 개수만큼 시작해서 내려갈수록 하나씩 뺸다 ( 예를 들어, 선호언어 6개 중 2번째로 선호하는 언어의 경우 (6-2=4점) 3. languages와 preference의 길이는 같고 해당 languages 점수는 동일 위치 preference가 된다. 4. table언어 선호도 x preference를 구하고, 그 언어 선호도의 총합이 가장 높은 직무를 return한다. 5 동일한 점수의 직무가 있으면 사전순으로 빠른 직업군을 return한다. 풀이 과정 1. 언어들을 짤라서 ..

프로그래머스 위클리 챌린지 3주차 - java

(원래 전부터 풀던건데 테케 3개를 통과 못해서 안되고있었다....바보같이 한줄을 빼먹어서 그랬다. 그래서 다른 공부도 못하고 진도가 느려짐.......) 문제 설명 1. board와 table이 각각 배열로 주어진다. 2. 0은 빈칸, 1은 블록으로 채워진 부분이다. 3. board의 빈 부분을 table의 블록으로 채워주면 된다. 4. 블록은 회전할 수 있고, 뒤집을수는 없다. 빈칸은 하나의 블록으로 딱 맞게 채워야만 한다. 이를 채우면 이렇게 되는 것이고, 답은 '14'를 return하게 된다. 풀이 과정 진짜 힘들게 구했다...풀이 알고리즘 자체는 생각하기 쉬운데, 이를 구현하는 것이 힘들다. 1. 먼저 각각 game_board의 경우는 빈칸(0) , table의 경우는 블록(1) 에 해당하는 것..

[백준 16496번] 큰 수 만들기 - java

문제 설명 1. 음이 아닌 정수 N개가 들어있는 리스트가 주어진다. 2. 이걸로 만들 수 있는 가장 큰 수를 return한다. 3. 답이 0이면 무조건 0하나만 출력되어야 한다. 0이 아닌 모든 수는 0으로 시작하지 않는다. 풀이 과정 1. 진짜 쉽게보고 풀었는데 생각보다 난이도가 있었다.. 또 다 풀어놓고 뻘짓해서 시간 엄청 보냈다. 문제의 내용을 잘 읽어봐야 할 것이다. 2. 먼저 입력은 String으로 입력받는다. 이걸 사용하면 더 쉽게 풀 수 있다. 3. 입력받은 String들을 배열로 만들고 내림차순으로 정렬한다. 45,4,44,43,42,41 그런데 위의 3까지만 진행하면 이렇게 정렬될 것이다. -> 45,44,43,42,41,4 이걸 해결하는 방법을 생각해 보았는데, '4'라는 자리수로 시작..

알고리즘 공부 2021.08.14

패캠 - java/spring 웹 개발 강의 수업 정리(1)

객체 지향 예전에는 C언어와 같은 절차 지향 언어가 주를 이루었다. '절차 지향'이란, 실행하고자 하는 순서대로 명령어를 입력하여 실행하는 방법이다. 과거에는 프로그램의 단위가 크지 않았고, 간단한 logic을 순차적으로 처리했기 때문에 절차지향을 사용했는데, 이후 컴퓨터가 발전하면서 프로그램이 복잡해져 유지보수, 개발기간 등 부분에서 비효율이 발생하였다. 이 어려움을 해결하기 위해 객체지향이 도입되었다. '객체지향'이란, 현실에 존재하는 사물을 있는 그대로 모델링하여, 이들의 행위와 속성을 정의하고 절차적이 아닌 객체가 중심이 되어 실제 사물이 동작하는 방식으로 설계한 것이다. 사물(객체), 행위(Method), 사물의 속성(변수-variable)을 사용하였다. 자바와 C++의 차이 java는 시스템 ..

이론 정리/java 2021.06.28