본문 바로가기
🥇Problem Solving (psS2mj)/SWEA

[SWEA] 4406. 모음이 보이지 않는 사람 (Java)

by psS2mj 2020. 4. 3.
반응형

문제 링크 / level: D3

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWNcD_66pUEDFAV8&categoryId=AWNcD_66pUEDFAV8&categoryType=CODE

 

 

 

내가 생각한 풀이

요 며칠 알고리즘 문제를 풀지 않아서, 몸풀기용으로 하나 풀기 위해 고른 문제다.

 

문제의 핵심 (출처: SWEA)

문제는 심플하다.

input으로 주어지는 알파벳으로 된 문자열에서 모음(a, e, i, o, u)만 제거한 결과를 출력해주면 된다.

이왕 몸풀기용으로 선택한 문제인만큼 연습을 위해 StringBuilder 클래스를 활용해보기로 했다.

 

한 눈에 보기에도 어렵지 않은 문제여서, 처음에는 단순히 입력 받은 문자열 길이 만큼 for문을 돌면서 글자를 제거해주면 된다고 생각했다. 하지만 막상 코드를 작성해보니 글자가 제거될 때마다 문자열의 길이가 줄어들기 때문에 코드가 복잡해질 가능성이 있었다.

※링크: https://docs.oracle.com/javase/8/docs/api/

그래서 처음에는 (위에 첨부한 스샷에 있는) delete와 관련된 메소드를 사용할 생각이었다가, 바로 철회하고 조금 더 쉽게 풀 수 있는 방법을 고민해봤다.🤔

고민해보자!

그리고 고민 끝에, 기존 문자열에서 삭제해나가는 방식보다는 새로운 문자열에 추가해나가는 방향으로 노선을 바꿨다.

// 핵심 코드
for (int i = 0; i < str.length(); i++) {
	char temp = str.charAt(i);
	if (temp != 'a' && temp != 'e' && temp != 'i' && temp != 'o' && temp != 'u') {
		sb.append(temp);
	}
}

가물가물한 기억에 의존하는 대신 StringBuilder의 메소드에 뭐가 있었는지 뒤져봤다. delete 대신에 append를 활용하기로 했다. 이렇게 하면 입력 받은 문자열에서 모음이 아닌 문자, 즉, 자음이 나올 때마다 StringBuilder에 계속 추가해준 뒤에 for문이 끝나고 그 결과를 출력해주면 끝!! 문제를 아주 심플하게 해결할 수 있었다.

 

 

▼아래 더보기를 누르면 코드 전체를 볼 수 있습니다.

더보기

[코드 보기]

 

 

소감: 알고리즘은 노가다가 아니다. (아마도^_^) 생각을 안하면 머리와 손이 고생한다.

그리고 내가 아직 문제풀이 경험이 적다보니 스스로 관점을 뒤집어서 생각해낸 경험이 많지 않았던 터라 뿌듯함도 느껴졌다.🤗👍

반응형

댓글