본문 바로가기
알고리즘/Samsung

SW 2007. 패턴 마디의 길이

by son_i 2023. 4. 14.
728x90

SW Expert Academy

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

생각보다 간단하게 풀었지만 내 코드는 완벽하지 않다.

2번째 자리까지 중간에 같은게 있으면 거기까지 마디로 인식 못 한다.

package algorithm;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
public class Solution
{
	public static void main(String args[]) throws Exception
	{
		//System.setIn(new FileInputStream("C:\\so_Project\\workspace\\BaekJoon\\src\\algorithm\\input.txt"));

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int num = Integer.parseInt(br.readLine());
		String arr[] = new String[num];
		
	
		for(int i=0;i<num;i++) {
			arr[i] = br.readLine();
			int count = 0;
			
			char tmp = arr[i].charAt(0);
			char tmp1 = arr[i].charAt(1);

			for(int j=1;j<10;j++) { //한 문자열을 돌면서 같은 애가 몇 번째에 나오는지 체크
				count++;
				if(arr[i].charAt(j)==tmp && arr[i].charAt(j+1)==tmp1) {
					break;
				}
			}
			System.out.println("#"+(i+1)+" "+count);
		}
	}
}

ex) koreakokoreakokoreako 일 때 마디를 5로 인식.

substring을 써서 모든 조건을 만족할 수 있게 다시 풀어보자

package algorithm;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

/*
   사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
   이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
 */
public class Solution
{
	public static void main(String args[]) throws Exception
	{
		//System.setIn(new FileInputStream("C:\\so_Project\\workspace\\BaekJoon\\src\\algorithm\\input.txt"));

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int num = Integer.parseInt(br.readLine());
		String arr[] = new String[num];
		
	
		for(int i=0;i<num;i++) {
			arr[i] = br.readLine();
			int count = 0;
			int t = 0;
			for(int j=0;j<10;j++) { //한 문자열을 돌면서 같은 애가 몇 번째에 나오는지 체크
				
				String tmp = arr[i].substring(0,j+2);
				String tmp1=arr[i].substring(j+2, j+4+t);
				t++;
				if(tmp.equals(tmp1)) {
					count = tmp.length();
					break;
				}
			}
			System.out.println("#"+(i+1)+" "+count);
		}
	}
}

완성 !

'알고리즘 > Samsung' 카테고리의 다른 글

SW 2001. 파리퇴치  (0) 2023.04.18
SW 2005. 파스칼의 삼각형  (0) 2023.04.14
SW 1859. 백만 장자 프로젝트  (0) 2023.04.13
SW 2072. 홀수만 더하기  (0) 2023.04.10
싸피 10기 준비 !  (0) 2023.04.10