알고리즘/알고리즘문제

[알고리즘] 백준 2675 문자열 반복

Unipiz 2022. 7. 14. 10:03

문자열을 다뤄보자.

백준 2675 문자열 반복 자바 파이썬

 

https://www.acmicpc.net/problem/2675

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net

 

 

[JAVA]

기초적인 문자열 다루는 문제이다.

1. BufferedReader 로 입력 받고

2. 한 문자씩 다룰 수 있게 배열에 넣고

3. 반복하면서 StringBuffer에 담아 최종 출력하기

>> for문안에 new char[] 가 마음에 안들어서 밖으로 빼야겠다고 자꾸만 생각이 든다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuffer sb = new StringBuffer("");
		int N = Integer.parseInt(br.readLine());
		for(int i=0;i<N;i++) {
			String s = br.readLine();
			char[] c = new char[s.length()];
			for(int j=0;j<s.length();j++) {
				c[j]=s.charAt(j);
			}
			for(int k=2;k<s.length();k++) {
				for(int m=0;m<c[0]-48;m++) {
					sb.append(c[k]);
				}
			}
			sb.append('\n');
		}
		System.out.println(sb);
	}
}

 

for 문 안에 new char[] 를 밖으로 빼내면서 ArrayList 사용해보자.

마음은 편하지만 메모리 사용량은 정확히 같았다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuffer sb = new StringBuffer("");
		ArrayList<Character> list = new ArrayList<>();
		int N = Integer.parseInt(br.readLine());
		for(int i=0;i<N;i++) {
			String s = br.readLine();
			for(int j=0;j<s.length();j++) {
				list.add(j,s.charAt(j));
			}
			for(int k=2;k<s.length();k++) {
				for(int m=0;m<list.get(0)-48;m++) {
					sb.append(list.get(k));
				}
			}
			sb.append('\n');
			list.clear();
		}
		System.out.println(sb);
	}
}

 

 

 

[Python]

입력받고 배열에 담아서 출력.

import sys

for _ in range(int(input())):
	S=sys.stdin.readline()
	arr=[]
	for i in range(2,int(len(S))-1):
		for j in range(int(S[0])):
			arr.append(S[i])
	print(''.join(arr))