반응형
[알고리즘][문자열][2941] 크로아티아 알파벳
*문제
https://www.acmicpc.net/problem/2941
*풀이
예외상황을 생각하지 못해서 처음부터 지우고 다시 풀었던 문제. 다양한 케이스들을 고려할 줄 알아야겠다. test case는 http://hsin.hr/coci/archive/2008_2009/ 에서 참고하여 추가적인 테스트를 진행하고 부족한 사항을 충족시켰다.
1. 문자열의 길이만큼 count값을 넣는다.
2. -/=/i 세 개중 하나일 경우 앞 문자를 검사한다.
3. 만약 앞 문자들이 각각 크로아티아 알파벳에 해당되면 카운트 값을 깎는다.
*코드
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 39 40 41 42 43 44 45 | package algorithm_String; import java.util.Scanner; public class q_2941 { public static void main(String[] args) { /* * 1. 문자열을 입력받는다. * 2. 입력받은 문자를 쪼개고 count값을 문자 길이로 지정 * 3. 해당 문자열을 for문으로 검사한다. * 4. =/-/j 로 끝날 경우 앞의 문자를 검사해준다. * 5. =의 경우 3개의 문자로 구성되는 크로아티아어도 고려해줘야 한다. * 6. 해당 될 경우 count값을 줄인다. */ Scanner scan = new Scanner(System.in); char[] arr = scan.nextLine().toCharArray(); int count = arr.length; for(int i=1;i<arr.length;i++) { int tmp = (int)arr[i]; if(tmp==61) { if(arr[i-1]=='c'||arr[i-1]=='s') { count--; }else if(arr[i-1]=='z') { if(i>1 && arr[i-2]=='d') { count-=2; }else count--; } }else if(tmp==45) { if(arr[i-1]=='c'||arr[i-1]=='d') { count--; } }else if(tmp==106) { if(arr[i-1]=='n' || arr[i-1]=='l') { count--; } } } System.out.println(count); } } | cs |
반응형
'CS > Algorithm' 카테고리의 다른 글
[알고리즘][문자열][9933] 민균이의 비밀번호 (0) | 2018.04.21 |
---|---|
[알고리즘][문자열][1764] 듣보잡 (0) | 2018.04.20 |
[알고리즘][문자열][2908] 상수 (0) | 2018.04.15 |
[알고리즘] 백트래킹(Backtracking) (1) | 2018.04.13 |
[알고리즘][DP][1010] 다리놓기 (0) | 2018.04.13 |
댓글