전체 글

CS공부

[JAVA] 얕은복사(Shallow Copy)와 깊은복사(Deep Copy)

1. 얕은복사 (Shallow Copy) 2. 깊은복사 (Deep Copy) | 얕은복사 (Shallow Copy) 얕은 복사는 쉽게 말해 '주소 값'을 복사한다는 의미이다. 복사한 객체 B가 원본 객체 A의 주소값을 복사하여 그 안에 있는 힙 영역을 참조한다. 만약 객체 A의 메모리 값을 변경 한다면, 객체 B도 같은 메모리 값을 공유하고 있기 때문에 함께 변경이 된다. 예를들어, A와 B는 201호 집 열쇠를 각자 가진 채로 같은 집에 살고있다고 생각하면 쉽다. 장점 : 같은 힙영역을 공유하고 있기 때문에 메모리를 절약하고 빠르다. 단점 : A를 변경 시 B도 같이 변경되기 때문에 주의가 필요하다. 문법 : int[] A = {1,2,3,4,5}; int[] B = A; B[0] = 6; A = [6..

백준

[JAVA] 백준 18870번 좌표 압축

문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 입력예제 5 2 4 -10 4 -9 출력예제 2 3 0 3 1 풀이 import java.io.*; import java.util.*; public class Main { public static v..

백준

[JAVA] 백준 10814번 나이순 정렬

문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 입력..

백준

[JAVA] 백준 1181번 단어 정렬

문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 입력예제 13 but i wont hesitate no more no more it cannot wait im yours 출력예제 i im it no but more wait wont yours cannot hesitate 풀이 import jav..

백준

[JAVA] 백준 11651번 좌표 정렬하기 2

문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 입력예제 5 0 4 1 2 1 -1 2 2 3 3 출력예제 1 -1 1 2 2 2 3 3 0 4 풀이 import java.io.*; import java.util.Arrays; import java.util.Comparator; publi..

백준

[JAVA] 백준 11650번 좌표 정렬하기

문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 입력예제 5 3 4 1 1 1 -1 2 2 3 3 출력예제 1 -1 1 1 2 2 3 3 3 4 풀이 import java.io.*; import java.util.Arrays; import java.util.Comparator; publi..

백준

[JAVA] 백준 1427번 소트인사이드

문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 입력예제 2143 출력예제 4321 풀이 import java.io.*; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new Buff..

백준

[JAVA] 백준 10989번 수 정렬하기 3

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 입력예제 10 5 2 3 1 4 2 3 5 1 7 출력예제 1 1 2 2 3 3 4 5 5 7 풀이 import java.io.*; public class Main { public static void main(String[] args) throws IOException { // Scanner scanner = new Scanner(System.in); BufferedRe..

DEV장화
캠코더 아니고 그냥 코더