목록전체 글 (135)
100세까지 코딩
한눈에 정리 String StringBuffer StringBuilder 가변 여부 X O O 연산 속도 느림 중간 빠름 동기화 O O X 스레드 세이프 O O X 저장 위치 String pool Heap Heap 1) String 문자열을 대표하기 때문에 조작에 필요한 대부분의 기능들을 제공한다. 또한, 레퍼런스형 변수이지만 기본 자료형처럼 선언할 수 있다. String은 다른 클래스와 달리 한번 메모리 공간에 할당되면 불변이다. 즉, +연산이나 replace등 문자열을 조작하면 새로운 String 객체를 만들어 바뀐 문자열을 저장하고 그 객체를 참조한다. 그리하여 문자열 연산이 많은 경우 성능이 좋지 않다. 간단하게 사용할 수 있고 동기화를 통한 스레드 세이프를 지원한다는 장점이 있다. 2) Stri..
문제 설명 풀기 전 생각 attedance가 true인 학생들의 index값(번호)을 배열리스트에 저장하기 2차원 배열을 만들어 등수와 번호를 함께 저장 등수를 기준으로 오름차순 정렬하여 top 3명의 번호를 구하기 class Solution { public int solution(int[] rank, boolean[] attendance) { ArrayList arr = new ArrayList(); int answer = 0; for(int i = 0; i < rank.length;i++){ if(attendance[i]){ // true면 arr.add(i); // index값을 넣어줌 } } int[][] rankArray = new int[arr.size()][arr.size()]; // 2차원..
문제 설명 풀기 전 생각 먼저 배열을 오름차순 정리를 한 뒤, 주어진 n 값과 가장 차이가 없는 값 (min)을 구하기 min값을 배열 처음에 넣고 min값을 기준으로 오른쪽, 왼쪽 거리 비교해 나가기 오름차순이니깐 left, right 거리가 같으면 right를 우선 배치 왼쪽이나 오른쪽이 끝지점에 다다르면 반대편 나머지 값을 순차적으로 복사해 주기 class Solution { public int[] solution(int[] numlist, int n) { int[] answer = new int[numlist.length]; int nearIndex = 0; // n값과 가장 가까운 값의 index int min = 10000; // n값과 가장 가까운 값 int k = 0; // 정답 배열에 넣..
문제 설명 풀기 전 생각 최대 r자릿수만큼 String을 만들어 각각 자리에 0과 5를 대입하려고 생각 하지만 그 방법을 2시간 고민했지만 안 나옴.. 고민하다가 깨달은 규칙은 처음에 5를 넣고 그 후 10을 곱하여 앞에 들어간 숫자들을 각각 더하면 5와 0으로 만들어진 숫자들로만 구성 5와 0으로 만들어진 list를 l과 r로 시작점과 끝점을 찾아 배열에 복사해 주기 class Solution { public int[] solution(int l, int r) { ArrayList list = new ArrayList(); int k = 5; int start = 0; int end = 0; while(k
문제 설명 풀기 전 생각 반복문을 사용하여 i = 1부터 n까지 반복하기 i가 +1 증가할 때마다 3x 마을에서 쓰는 숫자도 +1 해주기 3x 마을에서 쓰는 숫자 +1 했는데도 3의 배수거나 3이 포함되면 또 +1 해주기 포함여부는 3x 마을에서 쓰는 숫자를 String으로 바꾸고. contains() 메서드 사용 class Solution { public int solution(int n) { int answer = 0; for(int i = 1 ; i