Programmers
-
[Programmers/Java] JadenCase 문자열 만들기 - A0412022_PPS/3주차 2023. 1. 19. 11:39
- 문제 - 알고리즘 문제만 봤을 때는 엄청 쉬워보였는데, 테스트 케이스들이 많아 힘들었다. 일단 문자열을 split할 때 limit을 음수로 두어 모든 구분자를 구분 하도록 하였다.(즉, 마지막에 구분자가 와도 구분하도록!) 그리고 문자열에서 공백이 2번이상 반복되어 아무것도 없는 배열이 생겼을 때는 comtinue를 통해 그냥 지나가도록 했다. 나머지는 모두 소문자로 만든 후 문자열을 char배열로 만들었다. 첫 글자가 숫자가 아닌 소문자라면 대문자로 변경해 준다. 그리고 char배열을 String으로 만들어 다시 str배열에 넣어준다. 이후 str을 answer에 넣고 공백을 함께 넣어준다. 공백이 조금 힘들었었다. 공백문자가 연속해서 나오게 되면 해결하기가 에매 했는데, split에 limit을 ..
-
[Programmers/Java] 스킬트리 - A0052022_PPS/3주차 2023. 1. 16. 16:27
- 문제 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요. 제..
-
[Programmers/Java] 구명보트 - A0162022_PPS/3주차 2023. 1. 15. 15:19
- 문제 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작..
-
[Programmers/Java] 하샤드 수2022_PPS/2주차 2023. 1. 3. 21:54
- 문제 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. - 알고리즘 각 자릿수의 합을 구하고 그것을 원래 수로 나눈 값의 나머지가 0이면 true를 출력하도록 하였다. - 코드 class Solution { public boolean solution(int x) { boolean answer = true; int len = (int)(Math.log10(x)+1); int num = x; int result =..
-
[Programmers/Java] 문자열 다루기 기본 - A0092022_PPS/1주차 2023. 1. 1. 19:50
- 문제 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. - 알고리즘 먼저 문자열의 길이가 4 또는 6인지를 확인하는 if문을 작성했다. 그리고 아스키 코드에 따라 '0'이면 48번 '9'이면 57 이 사이의 값이 아니라면 false를 return 하도록 하였다. - 코드 class Solution { public boolean solution(String s) { boolean answer = true;..
-
[Programmers/Java] 문자열 내 p와 y의 개수 - A0062022_PPS/1주차 2022. 12. 30. 04:54
- 문제 문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. - 알고리즘 받은 문자열 s 를 소문자로 모두 변경한 후 p와 y의 수를 파악한다. 그래서 두 개를 비교하여 결과를 도출한다. - 코드 class Solution { boole..
-
[programmers/Java] 나누어 떨어지는 숫자 배열 - A0042022_PPS/1주차 2022. 12. 30. 04:37
- 문제 문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. - 알고리즘 arr를 받아 숫자를 하나씩 dicisor로 나누어 계산했다. ArrayList와 일반 배열을 같이 사용해야했어서 조금 헷갈렸다. 결과값이 배열로 return 되다보니 편안하게 코딩하기 힘들었다. 그래도 쉬운 문제였기에 금방 해결했다. - 코드 i..