본문 바로가기
백준/출제한 문제들

[백준] 29730번 : 임스의 데일리 인증 스터디

by lms0806 2023. 9. 16.
728x90
반응형

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

 

29730번: 임스의 데일리 인증 스터디

취업 준비생 임스는 취업 준비를 하면서 그날그날 무슨 공부를 하였는지 기록하기 위해 데일리 인증이라는 스터디를 시작했다. 임스는 매일 무슨 공부를 하였는지 적으면서 몇 개의 규칙을 정

www.acmicpc.net

해당 문제는 SW 개발자 취업&이직 정보공유방에서 시작된 데일리 인증을 아이디어로 제작되었습니다.

기본적인 데일리 인증 스터디에 그치지 않고, 나만의 규칙을 세워 진행하던 내용을 바탕으로 만들었습니다.

 

백준 문제 번호를 저장한 리스트와 다른 스터디 활동을 저장한 리스트를 따로 저장합니다.

그 후, 문제 번호 리스트는 "boj.kr/" 을 제외한 숫자들로만 저장하여 정렬합니다.

다른 스터디 활동의 경우, 문자열 길이 순으로 정렬 후 사전순으로 정렬합니다.

 

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

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
		
		int t = Integer.parseInt(br.readLine());
		
		ArrayList<Integer> a = new ArrayList<>();
		ArrayList<Node> b = new ArrayList<>();
		
		while(t --> 0) {
			String s = br.readLine();
			
			if(s.startsWith("boj.kr/")) {
				a.add(Integer.parseInt(s.substring(7)));
			}
			else {
				b.add(new Node(s));
			}
		}
		
		Collections.sort(a);
		Collections.sort(b);
		
		StringBuilder sb = new StringBuilder();
		for(Node n : b) {
			sb.append(n.s).append("\n");
		}
		for(Integer s : a) {
			sb.append("boj.kr/").append(s).append("\n");
		}
		System.out.print(sb);
	}
}

class Node implements Comparable<Node>{
	String s;
	
	public Node(String s) {
		this.s = s;
	}

	@Override
	public int compareTo(Node o) {
		if(o.s.length() == this.s.length()) {
			return this.s.compareTo(o.s);
		}
		return this.s.length() - o.s.length();
	}
}
728x90
반응형

댓글