본문 바로가기

알고리즘/Programmers15

[Programmers] 문자열 내림차순으로 배치하기 https://programmers.co.kr/learn/courses/30/lessons/12917 코딩테스트 연습 - 문자열 내림차순으로 배치하기 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 programmers.co.kr Python 아래처럼 아스키코드로 변환해서 정렬했는데... 그럴 필요가 없었다ㅎㅎ;; def solution(s): return ''.join(sorted(s, reverse=True, key = lambda x: ord(x))) 이렇게 문자열 s를 sorted로 리스트로 변환, 정렬이 바로 가능했다. def solution(s): .. 2022. 6. 15.
[Programmers] 부족한 금액 계산하기 https://programmers.co.kr/learn/courses/30/lessons/82612 코딩테스트 연습 - 부족한 금액 계산하기 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr 놀이기구에 count 회 탑승할 때 1, 2, ... count * price로 가격이 점점 올라가는데, 이를 등차수열로 보고 등차수열의 합 공식을 적용해서 계산이 가능하다. Python def solution(price, money, count): return max(0, price * (count + 1) * count // 2 - .. 2022. 6. 15.
[Programmers] 약수의 개수와 덧셈 https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 다른 방법이 생각나지 않아서 left에서 right까지 약수의 개수를 직접 구했는데 수학적으로 접근한 풀이가 있어서 기억해두려고 가져왔다. "약수가 홀수개인 모든 수는 제곱수" * 제곱수: 어떤 자연수의 제곱이 되는 수 제곱수가 아닌 수들은 각자 곱해지는 쌍이 있어서 짝수개가 나온다는 댓글이 이해하는 데 참고가.. 2022. 6. 15.
[Programmers] 예산 programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr 처음엔 배열 d의 모든 가능한 조합을 탐색해야 하는 줄 알고 고민했는데, 배열을 정렬한 후 반복문으로 요소의 합을 구해서 budget을 초과하기 전까지의 개수를 반환하면 되는 거였다..! 주어진 배열을 문제에 적합하게 바꿔서 생각하면 쉬운 문제였는데, 주어진 조건 그대로만 생각해서 어렵게 접근했다. 연습을 많이 해서 좀 더 유연하게 생각할 수 있게 해야겠다. Java static.. 2021. 5. 6.
[Programmers] 문자열 내 p와 y의 개수 programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 programmers.co.kr Java public class Solution { static boolean solution(String s) { s = s.toLowerCase(); int pCnt = 0; int yCnt = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) ==.. 2021. 2. 2.