2016. 12. 7. 21:47ㆍAlgorithm Solution
<단어의 갯수>
요즘 알고리즘 꾸준히 풀려고 노력하는 중이다. 하루에 3문제라도 풀려고 하는데...왜이렇게 시간이 오래 걸리는지ㅠㅠ
아직 초보라서 그런듯..ㅠㅠ
아무튼 이번에 푼 문제는 단어의 갯수를 세는 프로그램이다.
문제는 아래와 같다..
맨 처음엔 그냥 빈칸의 갯수만 체크해서 출력하였더니 역시나...틀렸다...이런 간단한 문제일리가 없지..당연..ㅋㅋㅋ
먼저 고려해야할 사항은 "The Curious" 단어가 있다면 the 와 Curious 사이에 띄어쓰기가 한칸인지 두칸인지...n칸인지를 고려해야했다.
<띄어쓰기를 편하게 '_'으로 표시>
그래서 The _ _ Curious 이렇게 띄어쓰기가 두칸이라면 첫번째 띄어쓰기를 체크하고 또 연속해서 바로 전 문자가 빈칸인지 아닌지 검사한다. 빈칸이 아닌 문자라면 당연 갯수를 증가하고 빈칸이라면 갯수증가를 하지 않는다.
이랬더니 또 틀렸다는 문구가 나서 생각해보니 맨 처음 빈칸을 입력하고 단어를 입력할 때와 단어를 다 입력하고 마지막에 계속 띄어쓰기를 n 번 한 경우가 생각이 났다.
그래서 그런 경우를 다 고려하기 위해서!!
Trim() 메서드를 사용해서 앞뒤 공백을 다 지워버렸다.
그리고 나서 또 틀렸다.....마지막으로 빈칸으로만 입력한 경우를 고려하지 않아서 였다.
그래서 Boolean checkEmpty라는 변수를 선언해서 checkEmpty==false 이라면 cnt+1을 하였고,(띄어쓰기가 단어 사이사이마다 하나씩 있다면 단어의 갯수= 띄어쓰기+1 이기 때문이다.)
checkEmpty==true 값이면 그냥 cnt 값만 출력하였다.
그랬더니 맞았다 ㅋㅋㅋㅋ 아래는 자바로 구현한 소스이다. 누군가에게 도움이 되었음 좋겠다!
<java>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.util.Scanner; /** * Created by nhs0912 on 2016-12-05. */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); int cnt = 0; str = str.trim();//앞뒤 빈칸 제거 Boolean checkEmpty = false; //빈칸만으로 이루어져있는지 검사 for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ' && str.charAt(i - 1) != ' ') { //띄어쓰기를 찾고 띄어쓰기 바로 앞의 문자가 빈칸이 아닌경우 cnt++; } else{ checkEmpty=true; } } if(checkEmpty) { System.out.println(cnt+1); }else { System.out.println(cnt); } } } | cs |
'Algorithm Solution' 카테고리의 다른 글
숫자 팰린드롬(palindrome) (0) | 2016.12.12 |
---|---|
백준 2577번 숫자의 갯수 (0) | 2016.12.07 |
Prime Number(소수) 구하기 java (0) | 2016.01.13 |
피보나치 수열 구하기 (0) | 2016.01.10 |
<30계단>angle(open) (0) | 2015.10.24 |