BOJ1431 시리얼 번호

2024. 2. 7. 02:48· Problem Solving/정렬

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

 

1431번: 시리얼 번호

첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어

www.acmicpc.net

 

sort의 comparator에서 조건문을 if(!=)로 하면 더 깔끔해질 수도 있다. 자릿수 합을 구하는 부분을 함수로 바꾸면 더욱 깔끔할 듯하다.

import java.io.*;
import java.util.*;
public class Main
{
	public static void main(String[] args) throws IOException{
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	    
	    int n = Integer.valueOf(br.readLine());
	    
	    String[] input = new String[n];
	    
	    for(int i=0;i<n;i++){
	        input[i]=br.readLine();
	    }
	    
	    Arrays.sort(input,(s1,s2)->{
	        
	       if(s1.length()==s2.length()){
	           int sum1 = 0;
	           int sum2 = 0;
	           
	           for(int i=0;i<s1.length();i++){
	               int temp1 = (int)s1.charAt(i)-48;
	               int temp2 = (int)s2.charAt(i)-48;
	               
	               if(temp1<10){
	                   sum1+=temp1;
	               }
	               
	               if(temp2<10){
	                   sum2+=temp2;
	               }
	           }
	           
	           
	           if(sum1==sum2) return s1.compareTo(s2);
	           
	           return sum1-sum2;
	       }
	       
	       return s1.length()-s2.length();
	    });
	    
	    for(int i=0;i<n;i++){
	        bw.write(input[i]+"\n");
	    }
	    
	    bw.flush();
	}
}

 

 

import java.util.Arrays;
import java.util.Scanner;

class Serial {
    public Serial(String serial) {
        this.serial = serial;
        for (int i = 0; i < serial.length(); i++)
            if ('0' <= serial.charAt(i) && serial.charAt(i) <= '9')
                sum += serial.charAt(i) - '0';
    }
    String serial;
    int sum;
}

class Main
{
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        Serial[] serials = new Serial[N];
        for (int i = 0; i < N; i++)
            serials[i] = new Serial(sc.next());

        Arrays.sort(serials, (o1, o2) -> {
            if (o1.serial.length() != o2.serial.length())
                return o1.serial.length() - o2.serial.length();
            if (o1.sum != o2.sum)
                return o1.sum - o2.sum;
            return o1.serial.compareTo(o2.serial);
        });

        for (Serial s : serials)
            System.out.println(s.serial);
    }
}

'Problem Solving > 정렬' 카테고리의 다른 글

BOJ18310 안테나(R)  (1) 2024.02.07
BOJ1931 회의실 배정(R) 대표문제  (1) 2024.02.06
BOJ2910 빈도 정렬  (0) 2024.02.06
BOJ18870 좌표압축  (0) 2024.02.06
BOJ1302 베스트셀러  (0) 2024.02.06
'Problem Solving/정렬' 카테고리의 다른 글
  • BOJ18310 안테나(R)
  • BOJ1931 회의실 배정(R) 대표문제
  • BOJ2910 빈도 정렬
  • BOJ18870 좌표압축
윤재에요
윤재에요
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (438)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (208)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (44)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 다이나믹
  • 이것이코딩테스트다
  • Relationship model
  • 개미전사
  • DP
  • UML
  • 최단거리
  • 파이썬
  • 카카오테크캠퍼스
  • 먀
  • 교환정렬
  • 참조 무결성
  • 기수정렬
  • 제약 사항
  • 최단 거리
  • 힙큐
  • 이것이 코딩테스트다.
  • 부품찾기
  • 효율적인화폐구성
  • 다이나믹프로그래밍
  • E-R Model
  • 이것이 코딩테스트다
  • 다익스트라
  • 계수정렬
  • 그리디
  • 다이어그램
  • 플로이드 워셜
  • weak entity
  • 데이터베이스
  • 재시도

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
BOJ1431 시리얼 번호
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.