[ BOJ 2251 ] 물통 (Java)

uoayop·2021년 9월 8일
1

알고리즘 문제

목록 보기
101/103
post-thumbnail

문제

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


동혁아~ 시키지 않아도 스스로 나무 조각을 옮긴거야~?


문제 풀이

자바 문법때문에 헷갈렸던 문제

두 배열이 같은지 비교할 때
(배열1).equals(배열2) 로 비교를 하면 안된다ㅠ

String 클래스가 아닌 개발자가 만든 객체의 경우 equals로 같은 여부를 검사하는 게 힘들다고 한다.

두 배열이 같은지 비교를 하려면 Arrays.equals(배열1, 배열2) 로 비교를 해야한다.

또 나만 몰랐지 또..

  • 배열이 {1, 2, 3, 4, 5} 와 같아질 때까지 반복문을 반복
  • 오른쪽에 있는 요소가 더 크다면 위치를 바꿔주고, 배열 출력

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class BOJ_2947_나무조각 {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int[] woods = new int[5];
		for (int i=0; i<5; i++) {
			woods[i] = Integer.parseInt(st.nextToken());
		}
		
		int[] answer = {1, 2, 3, 4, 5};
		
		while (!Arrays.equals(woods,answer)) {
			for (int i=0; i<4; i++) {
				if (woods[i] > woods[i+1]) {
					int temp = woods[i];
					woods[i] = woods[i+1];
					woods[i+1] = temp;
					print(woods);
				}
			}
		}
	}

	private static void print(int[] woods) {
		for (int w:woods) {
			System.out.print(w+" ");
		}
		System.out.println();
	}
}
profile
slow and steady wins the race 🐢

0개의 댓글