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

SW 1946. 간단한 압축 풀기

by son_i 2023. 5. 2.
728x90

SW Expert Academy

 

SW Expert Academy

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

swexpertacademy.com

자바로 품

문자와 숫자를 나눠서 입력받고 

list에 숫자만큼 반복을 돌려서 문자를 담음.

 

그리고 10개씩 출력

 

java
닫기
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; 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)); ‌‌BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); ‌‌int T = Integer.parseInt(br.readLine()); //테스트 케이스 ‌‌List <Character> list = new ArrayList<>(); ‌‌for(int i=1;i<=T;i++) { //하나의 테스트케이스마다 반복 ‌‌‌int num = Integer.parseInt(br.readLine()); ‌‌‌for(int j=0;j<num;j++) { ‌‌‌‌StringTokenizer st = new StringTokenizer(br.readLine()); ‌‌‌‌char c = st.nextToken().charAt(0); ‌‌‌‌int a = Integer.parseInt(st.nextToken()); ‌‌‌‌ ‌‌‌‌for(int k=0;k<a;k++) { ‌‌‌‌‌list.add(c); ‌‌‌‌} ‌‌‌} ‌‌‌bw.write("#"+i+"\n"); ‌‌‌int ch = 0; ‌‌‌while(list.size()>0) { ‌‌‌‌‌bw.write(list.get(0)); ‌‌‌‌‌list.remove(0); ‌‌‌‌‌ch ++; ‌‌‌‌if(ch == 10) { ‌‌‌‌‌bw.write("\n"); ‌‌‌‌‌ch=0; ‌‌‌‌} ‌‌‌‌‌ ‌‌‌} ‌‌‌bw.write("\n"); ‌‌}//하나의 테스트 케이스마다 반복문 끝 ‌‌bw.flush(); ‌‌bw.close(); } }

포스팅 하면서 생각해보니까 굳이 list에 담을 필요가 없다고 느껴졌다.

아니다 담아야 편할 것 같다.

 

728x90

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

SW 1285. 아름이의 돌 던지기  (0) 2023.05.05
SW 1945. 간단한 소인수분해  (0) 2023.05.02
SW 1948. 날짜 계산기  (0) 2023.05.02
SW 1961. 숫자 배열 회전  (0) 2023.04.27
SW 1983.조교의 성적 매기기  (1) 2023.04.18