반응형

Level 1 49

[프로그래머스] 직사각형 별찍기 - JAVA

프로그래머스 직사각형 별찍기 - JAVA 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 소스 코드 import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < b; i++) { for (int..

[프로그래머스] x만큼 간격이 있는 n개의 숫자 - JAVA

프로그래머스 x만큼 간격이 있는 n개의 숫자 - JAVA 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 문제 풀이 제한 조건의 x의 최대값과 n의 최대값으로 계산해보면 int의 범위를 넘는것을 알 수 있다. 문제에 주어진 answer 배열의 타입이 long인 것을 보고 예상했듯이 int형으로 계산하면 마지막 2개의 테스트에서 int 범위를 초과해 틀렸다고 나온다. 꼭 answer배열에 저장할 때 long타입으로 변환하..

[프로그래머스] 행렬의 덧셈 - JAVA

프로그래머스 행렬의 덧셈 - JAVA 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 문제 풀이 문제 설명을 읽어보면 arr1과 arr2그리고 return하는 배열의 크기가 모두 동일하다는 것을 알 수 있다. i를 arr1의 길이와 j를 arr1[0]길이만큼 반복하면 arr1과 arr2의 모든 수를 순회할 수 있다. 별도의 배열을 만들 필요없이 arr1에 arr2의 값을 더하고 arr1를 return. 소스 코드 class Solution { publ..

[프로그래머스] 핸드폰 번호 가리기 - JAVA

프로그래머스 핸드폰 번호 가리기- JAVA 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20이하인 문자열입니다. 문제 풀이 문자열 phone_number를 변경하거나 문자열을 만들어 더하기 연산을 하면 메모리 사용 비용이 커 StringBuilder를 이용. 전화번호 뒷 4자리 이전까지의 길이를 반복하며 *을 추가. 뒷 4자리를 sbustring()함수를 통해 추가. 소스 코드 class Solution { public String s..

[프로그래머스] 하샤드 수 - JAVA

프로그래머스 하샤드 수 - JAVA 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 문제 풀이 x를 마지막에 하샤드 수인지 검사할 때 사용해야 하므로 자리수를 구하며 변경되면 안되므로 n에 x값을 저장. n 이 0이 되기 전까지 각 자리수를 sum에 더하고 나누기 10을 하여 자리수를 이동. x가 자리수의 합으로 나누어지는지 나머지 연산으로 검사 후 리턴. 소스 코드 class Solution { public b..

[프로그래머스] 콜라츠 추측 - JAVA

프로그래머스 콜라츠 추측 - JAVA 문제 설명 입력된 수가 짝수라면 2로 나눕니다. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 결과로 나온 수에 1 ~ 2 작업을 1이 될 때까지 반복합니다. 제한 사항 입력된 수, num은 1 이상 8000000 미만인 정수입니다. 문제 풀이 입력으로 주어진 num을 가지고 작업을 반복하다 보면 int범위를 초과하는 경우가 발생(ex 테스트 케이스 3)하기 때문에 long type으로 입력을 변경. 작업을 반복할때마다 answer를 증가시키므로 while 조건문에서 num이 1이 될 때까지 그리고 answer가 500되기 전까지로 설정한다. while 조건문을 만족할때까지 문제 설명의 1~2작업을 반복한다. 작업 횟수가 500이 넘는지 비교하고 넘는경우 -1을,..

[프로그래머스] 최대공약수와 최소공배수- JAVA

프로그래머스 최대공약수와 최소공배수- JAVA 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성하라. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 문제 풀이 최대공약수를 찾기 위해서 유클리드의 호제법을 사용한다. 유클리드의 호제법을 사용하기 위해 두 수 중 큰 수와 작은 수를 찾아 저장. 재귀함수 gcd()를 사용하여 최대공약수를 찾는다. 최소공배수는 두 수를 곱한뒤 최대공약수를 나눔으로 찾을 수 있다. 소스 코드 class Solution { publi..

[프로그래머스] 짝수와 홀수 - JAVA

프로그래머스 짝수와 홀수 - JAVA 문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 문제 풀이 n % 2 로 나머지 연산하여 0이 나오면 짝수, 아닐시 홀수이다. 삼항 연산자를 사용하여 간결하게 하였다. 소스 코드 class Solution { public String solution(int num) { return num % 2 == 0 ? "Even" : "Odd"; } }

[프로그래머스] 제일 작은 수 제거하기 - JAVA

프로그래머스 제일 작은 수 제거하기 - JAVA 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴. 제한 조건 arr은 길이 1 이상인 배열이다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 이다. 문제 풀이 리턴하려는 배열이 빈 배열인 경우는 arr의 길이가 1인 경우로 검사 후 배열에 -1을 채워 리턴. arr배열에서 가장 작은 수를 찾아 저장한다. 반환하는 새로운 배열은 arr배열에서 가장 작은 수를 제거한 사이즈가 -1인 배열이다. 가장 작은 수를 제외한 모든 수를 answer배열..

반응형