Algorithm Study 70

[프로그래머스] 가장 큰 수 ( level.2) / JAVA / 정렬(Comparator)

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 완탐으로 풀었더니, 메모리 초과 ! Comparable, Comparator 인터페이스를 사용해서 비교해서 푸는 문제였다. 지난 번 공부했다고 생각했는데 구현하려하니까 하나도모르겠음. 복습하고 제대로 머리에 새길겸 보완해서 다시 정리해보았다. https://hyun-1200.tistory.com/6..

Algorithm Study 2022.06.10

[프로그래머스] 단어변환 ( level.3) / JAVA / DFS

https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 1. String 값 비교는 == 이 아닌 equals 사용할 것. 2. 문제 변수 잘 생각해볼것. 여기서 헤맸는데, hot -> dot 비교할때 오직 전체길이 3개중에서 2개만 맞으면 바꿀 수 있는 경우라 생각해서 코드를 짰다. 그런데 그렇게 하면 hit -> pht 인 경우도 바꿀 수 있다고 판단하기 때문에 오류가 ..

Algorithm Study 2022.06.03

[프로그래머스] 타겟넘버 (level.2) / JAVA / DFS

https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr - 난 왜 이걸 완전탐색문제라 생각하고 풀었지? - 어쨌든, 재귀 문제이면서 깊이우선 탐색이므로 DFS 문제인것 같다. number[index] 가 + 인 경우와 - 인 경우 둘 다 해야하므로, 해당 함수를 두번 호출하면 된다. 1) - 해주는 경우 : solve(numbers, index+1, sum-numbers[index],targe..

Algorithm Study 2022.06.03

[프로그래머스] 카펫 (level.2) / JAVA /완전탐색

https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 브라운과 옐로우 / 가로와 세로의 관계만 알아내면 금방 풀 수 있다. 1) 브라운 = (가로-2) *2 + 세로*2 옐로우 = (가로-2) * (세로-2)*2 이 때, 가로>= 세로 라는 조건이 있음. 따라서 세로는 3부터 브라운/2 까지만 가능하다고 설정하였다 ex) 브라운이 10 이라 가정할때, 가로 5, 세로 5 ( 가능. '가로>= 세로' 조건 성립O..

Algorithm Study 2022.05.25

[프로그래머스] 소수찾기 (level.2) / JAVA/ 완전탐색

https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 완전탐색 문제. ( + 백트래킹 같기도 하고!? ) 1. 배열의 값을 조합하여 모든 경우의 수를 따져야한다. -> 완전탐색으로 함수 구현 solve 2. 최종 String 값을 int로 변환해서. 그 int가 소수인지 확인 -> 소수판단 함수 구현 isPrime 3. 소수의 수 만큼 반환 -> 반환을 어디서 할 것인지 고민! List형을 두어 최종..

Algorithm Study 2022.05.25

[프로그래머스] 체육복 / java, Greedy

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 레벨1 이지만, 문제 안에 뭔가 신경쓸게 많았던 문제.! - 훔친 당한 학생이 여벌의 체육복을 가지고 있다면, 그 학생은 자신의 여벌 체육복을 입어야한다! - 훔친 학생의 수보다 여벌의 체육복을 가져온 수가 더 많을수도 있다. 나의 경우, 해당 문제를 재귀 or 완전탐색으로 풀어볼까 고민했다.. (?) 재귀로 풀면 안되는 이유, lost[0], lost[2] ....

Algorithm Study 2022.05.23

[프로그래머스] 네트워크 (level.3) / JAVA/ DFS

https://programmers.co.kr/learn/courses/30/lessons/43162?language=java 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 1. 노드의 방문 여부 배열을 2차원으로 할지 1차원으로 할지 고민했다. -> 2차원으로 했기 때문에 check[i][j]= false & check[j][i]=false & computer[i][j]=1 세 조건이 다 만족하는 경우만 dfs를 돌려야했다. * dfs함수가 한번 돌면서 연결되어 있는 정점들을 모두 true로 바꿔주기..

Algorithm Study 2022.05.23

[프로그래머스] 약수의 개수와 덧셈

https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 따로 특별하게 제어할 것도없이, 생각하는대로 구현하면 되는 문제이다.

Algorithm Study 2022.05.21

[프로그래머스] 정수 제곱근 판별 / java

https://programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr Math.sqrt(i) : i의 제곱근을 구하는 함수 Math.sqrt(i,n) : i의 n 제곱인 수를 구하는 함수 아래는 내가 제출한 코드. floor 대신 (int) 로 형 변환 해도 된다!!! 아래는 floor함수 쓴 거랑, int로 형 변환했을 때의 차이!

Algorithm Study 2022.05.19

[프로그래머스] K진수에서 소수 개수 구하기 / java

https://programmers.co.kr/learn/courses/30/lessons/92335 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소 programmers.co.kr 뭐야 쉬운데? 했다가 끝에서 계속 버벅거렸던 문제 ^^ .. 계속 테스트케이스 1에서만 실패가 나서 넘 부글부글...🤯🤯🤯 테스트 케이스 1에서 계속 오류난다면 아래를 확인해보시길.. ! 1. 해당 숫자가 소수인지 아닌지 판별하는 함수에서, 굳이 2부터 n까지 비교할 필요없고, n의 제곱근까지만 비교하면 된다...

Algorithm Study 2022.05.19