머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 모스부호는 정해진 패턴이 있으므로 그에 해당하는 데이터셋을 만들어야했다. Try 1) // answer에 더해지지 않음, 비효율적 String[] list = letter.split(" "); for(int i = 0; i < list.length; i++) { String cp = list[i]; if(cp == ".-") answer+= "a"; else if(cp == "-...") answer+= "b"; else if(cp == "-...
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요. 특정 숫자가 정해질때 두 숫자의 곱이 그 특정숫자가 되도록 하는 숫자 순서쌍을 찾는 문제이다. Try 1) 시간 초과 및 모든 테스트 통과 실패 /* >> 두번째 반복문에서 조건식을 생략했던 점이 시간초과의 원인인 것 같았다. >> 실제 곱셈 로직을 생각하기보다 어떻게하면 answer값이 증가될 수 있을지 생각해야할 것 같았다. */ // 첫번째 매개변수 (이중 반복문 처리) for(int i = 1; i
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요. 처음에는 응급도 배열에서 최소값을 [0]번째 인덱스 값으로 초기화 후 rank를 부여하며 찾고자 하였다. Try 1) // 오답 int min = Integer.MIN_VALUE; min = emergency[0]; // 순위의 최대값 = emergency 배열의 길이 int rank = emergency.length; for(int i = 0; i emergency[i]){ min ..
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 옹알이로 발음할 수 있는 문자가 해당 문자열에 포함되어있는지를 판단하는 문제였다. 임의로 문자열을 쪼개서 검사할 수 없기 때문에 처음에는 조금 난잡한 조건문으로 풀어보았다. Try 1) //babbling[i] 의 길이가 15에 가까울수록 더 복잡해지므로 수정필요 // 주어진 문자열 갯수만큼 반복하면서 for(int i = 0; i < babbling.leng..
문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요. 적절한 메서드를 사용하여 대문자를 소문자로 바꾸고, 소문자를 대문자로 바꾸는 과정이 필요하였다. 아스키코드를 더하고 빼는 방식으로도 구할 수 있지만 이번 풀이에서는 Character.isLowerCase() 와 Character.isUpperCase() 메서드를 사용하여 풀어보았다. if(Character.isLowerCase(my_string.charAt(i)) == true){ answer += Character.toUpperCase(my_string.charAt(i)); } isLowerCase의 반환값은 boolean 타입이므로 my_stri..
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요. 배열의 위치를 바꾸는 문제이다. 좌측변수와 우측변수를 두고 그 인덱스를 증가, 감소시켜가며 대칭되는 구조의 배열을 변경해나가면 되는 문제이다. temp를 두어 값이 중간에 삭제되지 않도록 하였다. for(int i = 0 ; i < num_list.length / 2; i++) { temp = num_list[lt]; num_list[lt] = num_list[rt]; num_list[rt] = temp; lt++; rt--; if(lt == rt) break; } 만약 홀수길이의 배열이어서 lt와 rt의 길이가 같아진다면 break..
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요. 특정 문자만 N번 반복하는 것이 아닌 모든 문자를 N번 반복하는 것이었기때문에 조건문 없이 이중 for문을 돌리면 되는 문제였다. public class repeat_string { public static String solution(String my_string, int n) { String answer = ""; for (int i = 0; i < my_string.length(); i++) { for (int j = 0; j < n; j++) { //System.out.print(my_string.charAt(i)); ..
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요. 암호해독과 마찬가지로 하나의 문자에 다른 문자가 대응되는 문제이다. 입력받는 숫자에 따라 "문자"를 구성하여 리턴하면 되었다. solution()함수 외로 planet() 함수를 만들어 그 안에 switch-case문으로 대응되는 문자를 작성하고 필요시마다 함수를 ..
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요. String타입으로 주어진 배열 안의 식을 연산하는 문제이다. 먼저 인덱스 별로 "인자1 (연산자) 인자2 부등호 결과값"이 주어진다. 실제 데이터로 표현하면 "3 - 4 = - 3" 이다. 이 데이터를 토큰별로 떼어내어 저장함과 동시에 이 수식이 맞는지 아닌지의 진위여부 또한 파악해야하는 문제이다. 먼저 3 - 4 = - 3처럼 띄어쓰기 포함해서 주어진 데이터를 저장할 수 있어야했다. String[] answer = new String[quiz.length]; for(int ..