-
[프로그래머스] 이상한 문자 만들기 자바 toUpper / toLowerCase코딩테스트 2025. 4. 7. 13:55반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12930
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
s는 1개이상의 단어로 구성되어 있다. 각 단어는" " 으로 구분한다.
각 단어를 인덱스 기준으로 짝수는 대문자 홀수는 소문자로 변환해 반환하시오.
접근
1. s를 " "기준으로 split
2. for 반복문 내부에서 단어별로 index 체크
3. index % 2 == 0 ? Character.toUpperCase(c) :Character.toLowerCase(c)
하는 로직으로 구성했다.public static String solution(String s) { String[] as = s.split(" "); for(int idx = 0; idx < as.length; idx ++ ){ String ss = as[idx]; StringBuilder b = new StringBuilder(); for(int i = 0; i < ss.length(); i ++){ if(i % 2 == 0){ b.append(Character.toUpperCase(ss.charAt(i))); } else { b.append(Character.toLowerCase(ss.charAt(i))); } } as[idx] = b.toString(); } return String.join(" ", as).trim(); }
발견된 문제
1.공백 문자 처리: 연속된 공백이 있는 경우 split(" ")이 빈 문자열을 생성할 수 있음
2.인덱스 계산: 공백도 인덱스에 포함되는지 여부 명확하지 않음수정
1. 배열을 수정하고 join으로 합치는 대신 answer에 바로 집어넣도록 조치
2. 빈 문자열도 작업과정에 누락되지 않도록 추가. split(" ", -1)public String solution2(String s) { String[] w = s.split(" ", -1); // 빈 문자열 포함하도록 StringBuilder answer = new StringBuilder(); for(String word : w){ if(word.isEmpty()){ answer.append(" "); continue; } StringBuilder tsd = new StringBuilder(); for(int i = 0; i < word.length() ; i++){ char c = word.charAt(i); if(i % 2 == 0){ tsd.append(Character.toUpperCase(c)); } else { tsd.append(Character.toLowerCase(c)); } } answer.append(tsd).append(" "); } //맨 뒤 공백 제거 if(!answer.isEmpty()){ answer.setLength(answer.length() -1); // 스트링 길이조정. 원본보다 줄여서 자르기 가능. } return answer.toString(); }
알게된 점
1. char 대문자화 : Character.toUpperCase(c);
2. char 소문자화 : Character.toLowerCase(c);
3. String 길이 조정 : string.setLength(새로운 길이); 기존 보다 작은값으로 설정시 자르기 가능반응형'코딩테스트' 카테고리의 다른 글
[프로그래머스] 소수 찾기 자바 에라스토테네스의 체 (0) 2025.04.07 [프로그래머스] 시저암호 자바 (0) 2025.04.07 [프로그래머스] 최대공약수와 최소공배수 자바 유클리드 호제법 (1) 2025.04.07 [프로그래머스] 비밀지도 이진법 (0) 2025.04.06 [프로그래머스] 다트게임 자바 리스트수정 합계 (0) 2025.04.06