이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

[백준] 23056 참가자 명단 - Java

  • 2021.10.31 23:24
  • Algorithm/Baekjoon

 

 

 

정렬 문제인데.. 조건이 까다롭다.

 

학급번호가 홀수인 학급을 청팀으로, 짝수인 학급을 백팀으로 나눈 다음 청팀을 먼저 출력하고 백팀을 나중에 출력한다.

학급별로 참가자를 출력하는데, 이름의 길이는 오름차순으로 출력하되 길이가 같으면 사전순으로 출력한다.

신청 가능한 수를 입력받는데 이 수보다 더 많이 참여할 수는 없다.

 

위 조건을 고려하면서 코드를 작성해야 한다.

 

코드를 통해 알아보자.

 

import java.util.*;

public class Main {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();

		// N은 학급 수 M 은 신청 가능한 인원 수
		// 첫줄부터 학급 오름차순으로 출력함.
		// 같은학급 이면 이름길이 짧은거부터!

		ArrayList<Integer> numlist = new ArrayList<>();
		ArrayList<String> namelist = new ArrayList<>();
		int[] chk = new int[11];
		while (true) {
			int num = sc.nextInt();
			String name = sc.next();
			if (num == 0) {
				break;
			}
			chk[num]++;
			if (chk[num] > M) {
				continue;
			}
			numlist.add(num);
			namelist.add(name);
		}

		for (int i = 0; i < numlist.size(); i++) {
			for (int j = 0; j < numlist.size() - 1; j++) {
				
				if (numlist.get(j) > numlist.get(j + 1)) {
					
					int temp = numlist.get(j + 1);
					numlist.set(j + 1, numlist.get(j));
					numlist.set(j, temp);
					
					String tempname = namelist.get(j + 1);
					namelist.set(j + 1, namelist.get(j));
					namelist.set(j, tempname);
					
				
				}
			}
		}
		
		
		for (int i = 0; i < numlist.size(); i++) {
			for (int j = 0; j < numlist.size() - 1; j++) {
				
				if (numlist.get(j + 1) == numlist.get(j)) {
					if (namelist.get(j + 1).length() > namelist.get(j).length()) {
						System.out.print("");
					} else if(namelist.get(j+1).length() < namelist.get(j).length()){
						String tempname2 = namelist.get(j + 1);
						namelist.set(j + 1, namelist.get(j));
						namelist.set(j, tempname2);
					}else if(namelist.get(j+1).length() == namelist.get(j).length()) {
						if(namelist.get(j+1).charAt(0)<namelist.get(j).charAt(0)) {
							String tempname2 = namelist.get(j + 1);
							namelist.set(j + 1, namelist.get(j));
							namelist.set(j, tempname2);
						}
					}
				}
			}
		}
		

		for (int i = 0; i < namelist.size(); i++) {
			if (numlist.get(i) % 2 == 0) {
				continue;
			} else {
				System.out.println(numlist.get(i) + " " + namelist.get(i));
			}
		}
		for (int i = 0; i < namelist.size(); i++) {
			if (numlist.get(i) % 2 != 0) {
				continue;
			} else {
				System.out.println(numlist.get(i) + " " + namelist.get(i));
			}
		}

	}
}

 

ArrayList를 공부할 겸 배열 말고 ArrayList를 활용해서 풀었다.

문자열 리스트와 정수 리스트를 만들고 버블정렬 해 주며 정수가 정렬될 때 문자열도 같이 자리를 바꾸도록 작성했다.

 

반응형

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 1016 제곱ㄴㄴ수 - Java  (0) 2021.11.17
[백준] 6549 히스토그램에서 가장 큰 직사각형 - Java  (0) 2021.11.14
[백준] 10845 큐 - Java  (0) 2021.10.30
[백준] 2702 초6수학 - Java  (0) 2021.10.29
[백준] 1159 농구 경기 - Java  (0) 2021.10.29

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [백준] 1016 제곱ㄴㄴ수 - Java

    [백준] 1016 제곱ㄴㄴ수 - Java

    2021.11.17
  • [백준] 6549 히스토그램에서 가장 큰 직사각형 - Java

    [백준] 6549 히스토그램에서 가장 큰 직사각형 - Java

    2021.11.14
  • [백준] 10845 큐 - Java

    [백준] 10845 큐 - Java

    2021.10.30
  • [백준] 2702 초6수학 - Java

    [백준] 2702 초6수학 - Java

    2021.10.29
다른 글 더 둘러보기

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (607)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (69)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Life Logs (0)
    • 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바