
내가 생각했을때 문제에서 원하는부분
알파벳 소문자로 이루어진 문자열 myString이 주어집니다.
알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.
내가 이 문제를 보고 생각해본 부분
Main111 클래스 내에 solution 메서드를 정의했다. 이 메서드는 입력 문자열 myString을 받아 각 문자를 하나씩 검사한다.
StringBuilder 객체 answer를 생성하여 결과 문자열을 효율적으로 만든다.
반복문을 통해 문자열의 각 문자 c를 차례로 가져오는데, 만약 해당 문자가 'l'보다 앞서면 'l'을 answer에 추가한다.
그렇지 않으면 원래 문자를 그대로 answer에 추가한다.
모든 문자를 검사한 후 최종적으로 answer.toString()을 반환한다.
main 메서드 내에서 Main111 객체 sol을 생성한다.
미리 정해진 두 개의 입력 문자열 input1, input2에 대해 각각 solution 메서드를 호출해 결과를 얻는다.
결과를 출력하여 예상되는 문자열 ("llllvwxyz", "llnnllllmm")과 일치하는지 확인한다.
코드로 구현
class Solution {
public String solution(String myString) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < myString.length(); i++) {
char c = myString.charAt(i);
if (c < 'l') {
answer.append('l');
} else {
answer.append(c);
}
}
return answer.toString();
}
}
프로그래머스 코드
package programmers.programmers2;
// 프로그래머스 l로 만들기
public class Main111 {
public String solution(String myString) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < myString.length(); i++) {
char c = myString.charAt(i);
if (c < 'l') {
answer.append('l');
} else {
answer.append(c);
}
}
return answer.toString();
}
// 실행 테스트용 main 메서드
public static void main(String[] args) {
Main111 sol = new Main111();
// 테스트 케이스 1
String input1 = "abcdevwxyz";
String output1 = sol.solution(input1);
System.out.println(output1); // 예상: llllvwxyz
// 테스트 케이스 2
String input2 = "jjnnllkkmm";
String output2 = sol.solution(input2);
System.out.println(output2); // 예상: llnnllllmm
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.