<Algorithm> 182. 가장 빠른 문자열 타이핑(SWExpert)
by BFine반응형
1. 가장 빠른 문자열 타이핑(SWExpert)
사용 알고리즘 : 포인터
-
쉬운 문제라고 생각해서 풀다가 꼼꼼한 처리를 못해서 조금 시간이 걸린 문제...
문자열처리 문제는 대체로 쉽다고 생각해서 안풀어봤는데 문자열처리문제도 몇개 풀어봐야겠다는 생각이 들었다...
문제에 대한 접근&생각
- 문자열 처리 -> B열 갯수로 A열을 커팅해서 2중 for문 -> 비효율적!
- 포인터를 이용 -> A열를 왼쪽부터 탐색하면서 idx를 늘이고 줄임 -> 테케 1개 맞음;;
- kaall al 일때 처음 a가 중복 될 경우 0부터 시작 -> 초기값 0을 카운트!
다른 방법 풀이
A열을 B로 replace(B," ") 해서 이 길이를 구함;;; 생각지 못한 가장 간단한 방법이다.....
내 코드
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.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Solution { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int test = Integer.parseInt(br.readLine()); for(int t =1; t <=test; t++) { /*************************** * 포인터를 이용하여 타이핑할 문자열의 * 원소를 하나씩 체크해서 타이핑 수를 * 구한다. ***************************/ String[] str = br.readLine().split(" "); char[] arr = str[0].toCharArray(); int idx = 0; int count = 0; for(char cr : arr) { if(cr==str[1].charAt(idx)) { idx ++; if(idx == str[1].length()) { idx = 0; count-=(str[1].length()-1); } }else if(cr==str[1].charAt(0)) { idx = 1; }else { idx = 0; } count++; //System.out.println(cr+" "+count+" "+idx); } System.out.println("#"+t+" "+count); } } } | cs |
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 184. 섬연결하기(Programmers) (0) | 2019.04.22 |
---|---|
<Algorithm> 183. 여행가자(BJO) (0) | 2019.04.22 |
<Algorithm> 181. K번째수(BJO) (0) | 2019.04.22 |
<Algorithm> 180. 은기의 송아지 세기(SWExpert) (0) | 2019.04.21 |
<Algorithm> 179. 진수의 홀수약수(SWExpert) (0) | 2019.04.21 |
블로그의 정보
57개월 BackEnd
BFine