Notice
Recent Posts
Recent Comments
Link
관리 메뉴

거북이처럼 천천히

알고리즘 (6월 7일) - (2) 본문

Algorithm/알고리즘 문제 풀이

알고리즘 (6월 7일) - (2)

유로 청년 2022. 6. 7. 20:10

1. 문제 (코딩도장, 문자열 압축하기)

https://codingdojang.com/scode/465?answer_mode=hide 

 

코딩도장

프로그래밍 문제풀이를 통해서 코딩 실력을 수련

codingdojang.com


2. 생각

 

문자열을 입력받아서, 같은 문자가 연속적으로 반복되는 경우에 그 반복 횟수를 표시하여 문자열을 압축하기.

입력 예시: aaabbcccccca

출력 예시: a3b2c6a1

 

  1. 임의의 String을 입력받는다.
  2. substring 메서드를 이용하여 문자 단위로 잘라서 해당 문자가 이전 문자와 같은지 비교한다.
  3. 같으면 counts를 하나 더하고, 다르면 이전까지의 문자와 반복 횟수를 newData에 추가한다.
  4. 마지막 문자에 도달하면 이전까지의 문자와 반복 횟수를 마지막으로 newData에 추가한다.

3. 풀이 및 코드 분석

import java.util.Scanner;

public class TestMain {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
			
		System.out.println("문자열 입력하시오:");
		String inputData = scan.next();
		String newData = "";
		String character = inputData.substring(0, 1);
		int counts = 1;
		
		
		for(int i=1; i<inputData.length(); i++) {		
			if(character.equals(inputData.substring(i, i+1))) {
				counts += 1;
			}else {
				newData += character+String.valueOf(counts);
				counts = 1;
				character = inputData.substring(i, i+1);
			}
			
			if(i==inputData.length()-1) {
				newData += character+String.valueOf(counts);
			}
		}
		
		System.out.printf("입력: %s\n\n출력: %s\n", inputData, newData);
	}
}

4. 메모

  • substring(n, m) 메소드는 해당 문자열의 n번 위치에서부터 m번째 위치전까지 뽑아서 반환하는 메소드이다.
    (주의. n ≤ 문자열 위치 < m 범위내의 문자, 문자열을 뽑기 때문에 범위 설정 주의하자.)

'Algorithm > 알고리즘 문제 풀이' 카테고리의 다른 글

알고리즘 (6월 9일)  (0) 2022.06.09
알고리즘 (6월 8일)  (0) 2022.06.08
알고리즘 (6월 7일)  (0) 2022.06.07
알고리즘 (6월 6일)  (0) 2022.06.06
알고리즘 (6월 5일)  (0) 2022.06.06