전체 글 86

자연수 뒤집어 배열로 만들기(JAVA)

1. 문제 매개변수로 받은 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열을 리턴하는 함수를 만드시오. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴한다. 2. 제한 n은 10,000,000,000이하인 자연수입니다. 3. 정답 class Solution { public int[] solution(long n) { int length = (int)(Math.log10(n) + 1); int[] answer = new int[length]; for (int i = 0; i < length; i++) { answer[i] = (int)(n % 10); n /= 10; } return answer; } } 4. 설명 4-1. 입력받은 자연수 n의 길이를 구하기 위해 log함수를 이용하여 로그..

자릿수 더하기(JAVA)

1. 문제 자연수 N을 매개변수로 받아, N의 각 자릿수의 합을 구해서 return 하는 함수를 만드시오. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 한다. 2. 제한 N의 범위 : 100,000,000 이하의 자연수 3. 정답 public class Solution { public int solution(int n) { int answer = 0; int length = (int)(Math.log10(n)+1); for (int i = 0; i < length; i++) { answer += (n % 10); n /= 10; } return answer; } } 4. 설명 4-1. Math.log10()을 통해 입력받은 자연수 n에 로그값을 씌워서 나온 값에 1을 더하고 int형..

이상한 문자 만들기(JAVA)

1. 문제 매개변수로 받은 문자열 s는 한 개 이상의 단어로 구성된다. 각 단어는 하나 이상의 공백문자로 구분된다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수를 만드시오. 2. 제한 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 3. 정답 class Solution { public String solution(String s) { char[] temp = s.toCharArray(); int j = 0; String answer = ""; for (int i = 0; i < temp.length; i++) { if (temp[i..

완주하지 못한 선수(JAVA)

1. 문제 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 단, 완주하지 못한 선수는 단 한명이다. 2. 제한 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 3. 정답 import java.util.HashMap; class Solution { public String solution(String[] particip..

수박수박수박수박수박수?(JAVA)

1. 문제 n을 매개변수로 받아 길이가 n인 "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수를 만드시오. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴한다. 2. 제한 n은 길이 10,000이하인 자연수입니다. 3. 정답 import java.util.ArrayList; class Solution { public String solution(int n) { String answer = ""; if (n % 2 ==0) { for (int i = 0; i < (n / 2); i++) { answer += "수박"; } } else { for (int i = 0; i < (n / 2); i++) { answer += "수박"; } answer += "수"; }..

String 비교시 '==' 가 아닌 .equals()를 써야하는 이유

String값을 비교할 때는 왜 ==가 아닌 .equals()함수를 써야할까? 그 이유를 알려면 문자열을 저장하는 방법부터 이해해야한다. 우선 우리가 String a = "hi"라고 하였다가 a = "hello"로 한다면 문자열의 값이 바뀌었다고 생각할 수 있지만 사실 그렇지 않다. String은 primitive 자료형이 아니기 때문에 a는 hi라는 객체를 가르키고 있다가 hello라는 객체를 가리키는 것으로 변경된 것에 불과하다. 그러면 String a = "Hi"와 String a = new String("Hi")는 어떤 차이가 있는 것일까? String a = "Hi" 이 방식으로 a를 만들면 이는 intern()함수를 통해 자동으로 String pool이라는 곳에 저장된다. String Pool..

자바 2022.01.17

서울에서 김서방 찾기(JAVA)

1. 문제 String형 배열 seoul의 요소들 중 "Kim"의 위치를 찾아서 "김서방은 x에 있다"는 String을 return하는 함수를 만드시오. 단, seoul에 "Kim"은 오직 한 번만 나타난다. 2. 제한 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. 3. 정답 class Solution { public String solution(String[] seoul) { String answer = ""; for (int i = 0 ; i < seoul.length; i++) { if (seoul[i].equals("Kim")) { answer = "김서방은 " + i ..

문자열 다루기 기본(JAVA)

1. 문제 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있다면 True를 리턴하고 아니라면 False를 리턴하는 함수를 만드시오. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 2. 제한 s는 길이 1 이상, 8 이하인 문자열입니다. 3. 정답 class Solution { public boolean solution(String s) { char [] temp = s.toCharArray(); if (temp.length == 4 || temp.length == 6) { for (int i = 0; i '9') { return false; } } ret..

문자열 내 p와 y의 개수(JAVA)

1. 문제 대문자와 소문자가 섞여있는 문자열 s가 매개변수로 주어지면 s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 함수를 완성하시오. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴한다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 2. 제한 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 3. 정답 class Solution { boolean solution(String s) { char [] temp = s.toCharArray(); int count = 0; for (i..

나누어 떨어지는 숫자 배열(JAVA)

1. 문제 매개변수 array의 요소들 중 매개변수 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수를 만드시오. 단, divisor로 나누어 떨어지는 요소가 하나도 없다면 배열에 -1을 담아 반환하세요. 2. 제한 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. 즉, 같은 숫자들이 반복되지 않습니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 3. 정답 import java.util.ArrayList; import java.util.Arrays; class Solution { public int[] solution(int[] arr, int divisor) { ArrayList res..