Java

[백준 1474] 밑 줄 (JAVA)

iheeeee6-6 2023. 3. 9. 23:15
728x90

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

 

1474번: 밑 줄

세준이는 N개의 영어 단어를 이용해 길이가 M인 새로운 단어를 만들려고 한다. 새로운 단어는 N개의 단어를 순서대로 이어 붙이고, 각 단어의 사이에 _을 넣어서 만든다. 이렇게 만든 새로운 단어

www.acmicpc.net

 

공통적으로 가져야 할 밑줄 개수, 추가적으로 더 붙어야 할 소문자 앞의 개수를 구한다.

만일, 소문자가 없어서 추가적인 개수가 남을 경우에는 대문자앞에 붙여줘야한다!! 

 

 

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

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		ArrayList<String> arr = new ArrayList<>();
		int count = 0;
		for (int i = 0; i < n; i++) {
			arr.add(br.readLine());
			count += arr.get(i).length();
		}
		int blank = m - count;
		if (blank > 0) {
			int c = blank / (n - 1);
			int k = blank % (n - 1);
			String add1 = "";
			while (c > 0) {
				add1 += '_';
				c--;
			}
			for (int j = 0; j < n - 1; j++) {
				if (k > 0) {
					if (arr.get(j + 1).charAt(0) <= 'z' && arr.get(j + 1).charAt(0) >= 'a') {
						arr.set(j, arr.get(j) + '_');
						k--;
					} else if (j >= n - 1 - k) {
						arr.set(j, arr.get(j) + '_');
						k--;
					}
				}
				arr.set(j, arr.get(j) + add1);
			}
		}
		StringBuilder sb = new StringBuilder();
		for (String str : arr) {
			sb.append(str);
		}
		System.out.println(sb);
	}

}