-
백준 11651번 문제풀이 자바개발/코테문제풀이 2023. 5. 20. 14:07728x90
문제이해
N값으로 좌표의 갯수를 입력받는다.
N=5라면 5개의 좌표를 입력받고 y좌표를 기준으로 내림차순정렬한다.
y좌표값이 같다면, x좌표를 내림차순형태로 해서 정렬해준다.
풀이코드
/* 백준 11651번 문제풀이)
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력)첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다.둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다.(-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력)첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.**/package test_0520;
import java.util.Arrays;import java.util.Scanner;
public class test_0520_1 {public static void main(String[] args){Scanner in = new Scanner(System.in);System.out.println("좌표의 갯수 N을 입력하세요");입력받을 좌표갯수int N = in.nextInt();좌표를 담을 배열을 생성
int [][] xy = new int [N][2];
for(int i=0; i<N; i++){System.out.println(i+"번쨰 x좌표값을 입력하세요.");xy[i][0]=in.nextInt();System.out.println(i+"번째 y좌표값을 입력하세요.");xy[i][1]=in.nextInt();}제일 중요한 정렬해주는 부분
Arrays.sort(xy,(xy1,xy2)->{ 람다식을 사용했다.if(xy1[1]==xy2[1]){ 두개의 좌표를 비교하여, y값이 같다면return xy1[0]-xy2[0]; x축값을 비교해주는 부분이다. 결과값이 양수면 자리가 교체된다.}else{ y축값이 같지않다면return xy1[1]-xy2[1]; y축값을 비교하여 양수일때 자리가 교체된다.}});for(int i=0; i<N; i++){ 정렬이 끝난 좌표배열을 순서대로 출력시켜준다.System.out.println(xy[i][0]+" "+xy[i][1]);}}}1. 좌표의 갯수 N을 입력받는다.
2. 좌표를 담을 배열을 생성해준다.
3. 좌표의 값들을 배열에 입력해준다.
4. 람다식을 이용해 배열을 정렬해준다.
5. 정렬된 배열을 순서대로 출력해준다.
*람다식 : 메서드를 사용하지않고 메서드를 하나의 식으로 표현한 것이다.
(매개변수,...)->{실행문} 형태로 사용한다.
ex)
(int a, int b)->{return a+b;}
결과
728x90'개발 > 코테문제풀이' 카테고리의 다른 글
백준 10814번 문제풀이 자바 (0) 2023.05.22 백준 1181번 자바 문제풀이 (0) 2023.05.20 백준 1427번 문제풀이 자바 (0) 2023.05.19 백준 19532번 문제풀이 자바 (0) 2023.05.10 백준 2231번 문제풀이 자바 (0) 2023.05.09