[프로그래머스] 서울에서 김서방 찾기
·
카테고리 없음
문제 이해목표: 주어진 문자열 배열 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]]# 테스트 ..
[프로그래머스] 문자열 내 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'의 개수를 비교해야 합니다. 이를 위해 문자열을 모두 ..
[프로그래머스] 약수의 합
·
여러가지/알고리즘 & 자료구조
문제 설명정수 n이 주어졌을 때, n의 모든 약수를 더한 값을 반환하는 함수를 작성하는 문제입니다. 예를 들어, n = 12라면 약수는 1, 2, 3, 4, 6, 12이고, 이들의 합은 28입니다.제한 사항n은 0 이상 3000 이하인 정수입니다.입출력 예nreturn122856입출력 예 #1: 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.입출력 예 #2: 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.문제 풀이이 문제는 주어진 n의 약수를 구하고, 그 합을 반환하는 문제입니다. 앞서 설명한 것처럼, 약수는 대칭적으로 존재하기 때문에 모든 약수를 구하기 위해서는 1부터 √n까지만 확인하면 됩니다. 다만, n이 0일 경우 약수가 없기 때문에, 0에 대해서는 특..