[프로그래머스] 음양 더하기
·
여러가지/알고리즘 & 자료구조
문제 요약주어진 절댓값 배열 absolutes와 부호 배열 signs를 이용하여 실제 정수들의 합을 구하는 문제입니다.시간 복잡도 분석최악의 경우: absolutes 배열의 모든 원소를 한 번씩 순회해야 하므로, 시간 복잡도는 O(N)입니다. 여기서 N은 absolutes 배열의 길이입니다.평균적인 경우: 최악의 경우와 동일하게 O(N)입니다.결론: 입력 배열의 크기에 비례하여 시간이 선형적으로 증가하므로, 효율적인 알고리즘이라고 할 수 있습니다.공간 복잡도 분석추가 메모리 사용: 별도의 자료구조를 사용하지 않고, 입력으로 주어진 배열과 합을 저장할 변수 answer만 사용합니다.공간 복잡도: O(1)입니다. 즉, 입력 데이터의 크기에 상관없이 일정한 크기의 메모리만 사용합니다.결론: 공간 복잡도가 매우..
[프로그래머스] 콜라츠 추측
·
여러가지/알고리즘 & 자료구조
콜라츠 추측: 자바로 풀어보는 상세 가이드문제 이해콜라츠 추측은 간단한 규칙을 가진 수열 문제입니다. 주어진 숫자에 대해 다음 연산을 반복하면 모든 숫자가 결국 1이 된다는 추측입니다.짝수: 2로 나눔홀수: 3을 곱하고 1을 더함이 문제에서는 주어진 숫자가 1이 되기까지 몇 번의 연산이 필요한지를 구하는 것이 목표입니다.자바 코드 구현public int solution(long num) { int count = 0; while (num != 1 && count 코드 설명count 변수: 연산 횟수를 세기 위한 변수입니다.while 루프: num이 1이 아니고 count가 500보다 작을 때까지 반복합니다.짝수/홀수 판별 및 연산: 삼항 연산자를 이용하여 짝수와 홀수에 따른 연산을 간결하게 표현..
[프로그래머스] 두 정수 사이의 합
·
여러가지/알고리즘 & 자료구조
두 정수 사이의 합 문제 해결문제 설명두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.제한 조건a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.a와 b의 대소관계는 정해져있지 않습니다.입출력 예a b return3 5 123 3 35 3 12해결 방법1. 반복문을 이용한 직관적인 방법class Solution { public long solution(int a, int b) { long answer = 0; ..
[프로그래머스] 하샤드 수
·
여러가지/알고리즘 & 자료구조
하샤드 수 판별 알고리즘 심층 분석: 두 가지 접근법 비교 및 복잡도 분석문제 설명양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.제한 조건x는 1 이상, 10000 이하인 정수입니다.해결 방법1. 반복문을 이용한 직관적인 구현class Solution { public boolean solution(int x) { int sum = 0, n = x; while (n > 0) { sum += n % 10; n /=..
[프로그래머스] 정수 제곱근 판별
·
여러가지/알고리즘 & 자료구조
프로그래머스 정수 제곱근 판별 문제: 다양한 풀이 방법 심층 분석문제 요약주어진 양의 정수 n이 어떤 양의 정수 x의 제곱인지 판별하는 문제입니다. 만약 n이 x의 제곱이라면 x+1의 제곱을, 아니면 -1을 반환하는 함수를 구현해야 합니다.풀이 1: 제곱근을 이용한 판별코드:class Solution { public long solution(long n) { double sqrt = Math.sqrt(n); // 제곱근이 정수인지 확인 if (sqrt % 1 == 0) { long root = (long) sqrt; return (root + 1) * (root + 1); } else { r..
[프로그래머스] 정수 내림차순으로 배치하기
·
여러가지/알고리즘 & 자료구조
문제 설명주어진 자연수 n의 각 자릿수를 큰 순서대로 정렬하여 새로운 정수를 반환하는 문제입니다. 예를 들어, n = 118372라면, 각 자릿수를 내림차순으로 정렬한 후, 873211을 반환해야 합니다.제한 조건n은 1 이상 8,000,000,000 이하인 자연수입니다.입출력 예nreturn118372873211문제 풀이이 문제는 다음 순서대로 해결할 수 있습니다:정수 n을 문자열로 변환합니다.문자열의 각 자릿수를 리스트에 저장한 후, 이를 내림차순으로 정렬합니다.정렬된 리스트를 다시 문자열로 합치고, 이를 정수로 변환하여 반환합니다.1. Python 코드 풀이def solution(n): # 정수를 문자열로 변환한 뒤, 각 자릿수를 리스트로 변환하고 내림차순으로 정렬 sorted_digit..
[프로그래머스] 자연수 뒤집어 배열로 만들기
·
여러가지/알고리즘 & 자료구조
문제 설명자연수 n이 주어졌을 때, 이 숫자를 뒤집어 각 자리 숫자를 배열의 원소로 가지는 배열을 반환하는 문제입니다. 예를 들어 n = 12345라면, 배열 [5, 4, 3, 2, 1]을 반환해야 합니다.제한 조건n은 10,000,000,000 이하인 자연수입니다.입출력 예nreturn12345[5, 4, 3, 2, 1]문제 풀이이 문제는 주어진 자연수를 뒤집어 각 자릿수를 분리해 배열로 만드는 문제입니다. 이를 해결하기 위한 두 가지 접근 방법은 문자열로 변환하여 처리하거나, 수학적 계산을 이용하는 방식입니다.1. Python 코드 풀이방법 1: 문자열 변환 후 리스트로 변환def solution(n): return [int(digit) for digit in str(n)[::-1]]# 테스트 ..
[프로그래머스] 문자열 내 p와 y의 개수
·
여러가지/알고리즘 & 자료구조
문제 설명주어진 문자열 s에서 대소문자 구분 없이 문자 'p'와 'y'의 개수를 비교하여, 개수가 같으면 True, 다르면 False를 반환하는 문제입니다.또한, 'p'와 'y'가 모두 하나도 없는 경우에도 True를 반환해야 합니다.제한 사항문자열 s의 길이는 50 이하의 자연수입니다.문자열 s는 알파벳으로만 이루어져 있습니다.입출력 예sanswer"pPoooyY"true"Pyy"false입출력 예 #1: 'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 반환합니다.입출력 예 #2: 'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 반환합니다.문제 풀이이 문제에서는 주어진 문자열에서 대소문자를 구분하지 않고 'p'와 'y'의 개수를 비교해야 합니다. 이를 위해 문자열을 모두 ..