바위 뚫는중

[프로그래머스] Lv1. 문자열 내림차순으로 배치하기, 이상한 문자 만들기 본문

Algorithms/프로그래머스

[프로그래머스] Lv1. 문자열 내림차순으로 배치하기, 이상한 문자 만들기

devran 2023. 8. 8. 10:53
반응형

문자열 내림차순으로 배치하기

문제

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.

s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

제한 사항

  • str은 길이 1 이상인 문자열입니다.

풀이

문자열에서 sort하면 큰거부터 나열되고,

reverseOrder 이용시 작은알파벳부터 나열된다

split으로 Character하나씩 배열에 넣고, 이를 빈 스트링에 하나씩 더해주어 반환

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        
        String[] chs = s.split("");
        
        Arrays.sort(chs, Collections.reverseOrder());
        
        for(String a : chs)
           answer += a;
        
        return answer;
    }
   
}

이상한 문자 만들기

문제

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

풀이

쉬워보이지만 안쉬움

공백기준으로 자르되, 맨 마지막의 경우 공백이 포함될 수 있으므로 -1을 해준다고 한다,, 이부분은 잘모르겠음 아직도,, 안하면 틀리게 나옴

그 뒤로는 똑같고

toUpperCase(), toLowerCase() 를 사용하고

단어 글자별로 join을 통해 각 반복문이 끝날때마다 합쳐주고

문장을 다시 완성할때는 띄어쓰기를 활용한다

파이썬하고 자바를 하니 느낀점은,,뭔가,, 자바는 ide를 사용안하면 정말 너무어렵다는 것

코드

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        String [] arr = s.split(" ", -1); // 공백기준으로 자르기 
        
        // 배열길이만큼 반복 
        for(int i = 0; i < arr.length; i ++) {
            String [] arr2 = arr[i].split(""); //그냥 자르기 
            
            for ( int j = 0; j < arr2.length; j ++) {
                if (j%2 == 0) // 짝수는
                arr2[j] = arr2[j].toUpperCase();
                else
                arr2[j] = arr2[j].toLowerCase();
            }
            
        arr[i] = String.join("",arr2);    
        }
        
     return String.join(" ", arr);   
    }
    
}

 

반응형