[프로그래머스] Java 코딩테스트 Lv.2 - JadenCase 문자열 만들기

yihyun·2025년 4월 25일

코딩테스트

목록 보기
77/105
post-thumbnail

JadenCase 문자열 만들기

✅ 문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

✅ 제한사항

s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.

🔽 소스코드 1

💻 풀이

  • 단어의 첫번째 문자만 대문자, 나머지는 소문자이기 때문에 문자열을 toLowerCase()를 사용해 먼저 전부 소문자로 바꿔준 뒤

  • split(" ", -1)을 사용해 공백으로 구분해 준다.

  • 이때 공백문자가 연속해서 나올 수 있다는 제한사항을 참고해 빈 문자열도 배열에 담아주기 위해 -1을 함께 사용해주었다.

  • 이후에는 반복문을 사용해 빈 문자열이 아닐 경우 단어의 첫 번째만 대문자로 바꿔 StringBuilder에 담아주고 subString(1)을 사용해 1번부터 마지막까지의 문자들을 담아준다.

시간 0.07ms ~ 0.17ms

	public String solution(String s) {
		
		StringBuilder sb = new StringBuilder();
		
		String[] arr = s.toLowerCase().split(" ", -1);
		
		for(int i = 0; i < arr.length; i++) {
			
			
			if(arr[i].length() > 0) {
				sb.append(Character.toUpperCase(arr[i].charAt(0)))
					.append(arr[i].substring(1));
			}else {
				sb.append(arr[i]);
			}
			
			if(i < arr.length -1) {
				sb.append(" ");
			}
		}
				
		return sb.toString();
	}

🔽 소스코드 2 (삼항연산자 활용)

💻 풀이

  • 소스코드 1번 보다는 조금 더 간결한 코드로 작성한 코드이다.
  • 단어를 모두 소문자로 만들어 공백을 기준으로 잘라주고,
  • 단어가 첫 글자인지를 판단하는 flag를 선언해준다.
  • 이후 반복문을 통해 만약 첫 단어이면 대문자로 바꿔주고 아닐 경우 소문자로 변경한 문자를 넣어준다.
  • 반복문을 진행하다가 공백을 만나면 이후 문자는 첫 단어이므로 다시 flag를 true로 바꿔 코드를 진행한다.

시간 1.28ms ~ 3.74ms

	public String soultion1(String s) {
		
		String answer = "";
		String[] arr = s.toLowerCase().split("");
		boolean flag = true;
		
		for(String str : arr) {
			answer += flag ? str.toUpperCase() : str;
			flag = str.equals(" ") ? true : false;
		}
		
		return answer;
	}

📌 풀어본 소감

  • 확실히 단계(레벨)가 올라가고 정답률이 낮아질 수록 문제의 난이도가 올라가는 것을 느꼈다.
  • 이제는 그냥 문제를 해결하는 것이 아니라 코드의 효율성을 고려하며 문제를 풀어야 한다.
  • 그렇지 않으면 실패한다 😥
  • 덕분에 내가 코드를 보는 실력도 점점 늘어가는 것을 느낀다.
  • 하지만 확실히 코테는 Java에 있는 다양한 메서드들을 많이 알고 있는 것과
  • 문제의 본질을 파악해 접근하는 것이 정말 중요한 것 같다.
  • 다행스럽게도 2가지 중요한 점은 노력으로 성장할 수 있으니까 더 많이 더 깊게 공부를 해야겠다.
profile
개발자가 되어보자

0개의 댓글