class Solution {
public String solution(String s) {
String answer = "";
return answer;
}
}
문제 설명 : 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항 :
1. 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
2.첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
우선 스트링 배열을 선언하고 split() 매서드를 사용하여 공백을 통해 나눠야겠다고 생각했습니다. 그리고 for문과 if문을 이용하여 접근해보려고 하였고 소문자 대문자 만드는 매서드인 toUpperCase(), toLowerCase()를 사용해봤습니다.
class Solution {
public String solution(String s) {
String answer = "";
String[] arr = s.split("");
int a = 0;
for(int i = 0; i < arr.length; i ++){
if(arr[i].equals(" ")){ //공백이라면 a = 0;으로 초기화한다.
a = 0;
}else if(a % 2 == 0){
arr[i] = arr[i].toUpperCase(); // 2로 나눴을때 값이 0이면 대문자
a ++; // a++ 증감시켜준다
}else{
arr[i] = arr[i].toLowerCase(); // 아닐때는 소문자
a++;
}
answer += arr[i];
}
return answer;
}
}
class Solution {
public String solution(String s) {
String answer = "";
int cnt = 0;
String[] array = s.split("");
for(String ss : array) {
cnt = ss.contains(" ") ? 0 : cnt + 1;
answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase();
}
return answer;
}
}
다른사람은 향상된 for문과 대/소문자를 구분하는 매소드 contains() 사용하였고 3항연산자를 통해 가독성을 좋게했습니다. 이 코드를 보고 저는 contains() 라는 대/소문자 구분 메소드를 알게 되었고 훨씬 더 가독성이 좋은 코드로 만들 수 있겠구나라고 생각했습니다.
class Solution {
public int[] solution(long n) {
int[] answer = {};
return answer;
}
}
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건:
1. n은 10,000,000,000이하인 자연수입니다.
자연수 n을 뒤집어 각 자리를 원소로 가지는 배열 형태로 만들기위해서 우선 각자리를 원소리가지기위해 for문을 이용하여 10으로 나눈 나머지를 배열에 대입하면 1의자리의 값이 첫번째 인덱스로 들어가겠구나라고 생각하여 접근했습니다.
class Solution {
public int[] solution(long n) {
String a = n +"";
int[] answer = new int[a.length()];
for(int i = 0; n > 0; i++){
answer[i] += (int)(n % 10); //answer[0]에 1의자리가 들어가기때문에
n /= 10; //뒤집어진 형태로 나온다.
}
return answer;
}
}
for문과 if문 배열을 사용하여 문제에 접근하는 방법에 익숙해지고있습니다. 하지만 아직 개념이 부족하며 문제를 좀더 쉽게 해결하기위해서는 더 많은 매소드를 찾아보고 공부를 해야겠다고 느꼈습니다. 아직 어려운 알고리즘 문제를 시도해보지는 못했지만 더 노력하여 점차 실력을 키워나갈것입니다.