[프로그래머스] 음양 더하기
·
여러가지/알고리즘 & 자료구조
문제 요약주어진 절댓값 배열 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보다 작을 때까지 반복합니다.짝수/홀수 판별 및 연산: 삼항 연산자를 이용하여 짝수와 홀수에 따른 연산을 간결하게 표현..
[프로그래머스] 서울에서 김서방 찾기
·
카테고리 없음
문제 이해목표: 주어진 문자열 배열 seoul에서 "Kim"이라는 문자열이 위치한 인덱스를 찾아, "김서방은 x에 있다" 형식의 문자열을 반환합니다.조건:"Kim"은 배열에 한 번만 등장합니다.잘못된 입력은 없습니다.자바 코드class Solution { public String solution(String[] seoul) { int index = 0; for (int i = 0; i 코드 설명index 변수 초기화: "Kim"의 인덱스를 저장할 index 변수를 0으로 초기화합니다.배열 순회: for 문을 사용하여 seoul 배열의 모든 요소를 순서대로 확인합니다."Kim" 찾기: 현재 요소가 "Kim"인지 비교합니다. 만약 "Kim"이라면 index에 현재 인덱스 i를 ..
[프로그래머스] 두 정수 사이의 합
·
여러가지/알고리즘 & 자료구조
두 정수 사이의 합 문제 해결문제 설명두 정수 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]]# 테스트 ..