목록Computer (214)
일단 씻고 나가자
배열은 별거 아니다. 별이 배열거 아닌 이유가 뭐냐면, 우선 별은 배열로 어렵지 않는 데다가 나는 남들보다 몇 배열 심히 별의배열 문제를 매열배일 풀고 있기 때문배열.replaceAll("배열", "별"); 이번 문제는 그냥 아이디어만 있으면 2분만에 콧등 벅벅 긁으며 풀 수 있는 문제였지만, 메모리와 시간 비교를 위해 여러가지 시행착오를 겪었던 문제였다. 이번 문제로 깨달은 것으로 이번 문제 뿐 아니라 앞으로의 코테에 여러가지 도움을 받을 수 있을 거 같다. 문제 풀이의 아이디어와 여러가지 시행착오를 공개하겠다. 1. 정렬로 풀기 문제 보자마자 Arrays.sort() 안 떠오른 흑우 없제~~ 간단한 아이디어로, input 받은 값들을 배열에 넣어서 정렬하면 맨 처음 index엔 가장 작은 수가, 맨 ..
2023. 03. 14 화요일 - [Java] Queue 클래스 객체 생성법? 주요 함수? : Queue는 인터페이스이므로, 직접 객체를 만들 순 없으나 (만들려면 내부의 추상 메서드를 모두 override 해야 함.) LinekedList로 업캐스팅하여 쉽게 만들 수 있다. Queue queue = new LinkedList(); add()/ poll()/ peek()/ contains(value)/ size()/ isEmpty()/ clear() Queue는 Stack과 조금 다르게 clear 상태에서 poll을 하면 null을 반환한다. - ArrayList와 LinkedList의 차이? : ArrayList는 특정 인덱스에 삽입/삭제 시에 해당 인덱스 이후 모든 인덱스를 한 칸씩 미루거나 당겨서 ..
형편 없는 메모리와 시간 ㅋㅋ큐ㅠㅠ 그래도 큐 클래스를 사용하지 않고 문제 해석과 논리성만을 이용해서 풀었다는 거에 의의를 두자.. 문제 해석과 규칙성 발견에만 엄청난 시간을 쏟았던 문제. ㅋㅋ큐ㅠㅠ ㅋㅋ큐ㅠㅠ ㅋㅋQueueㅠㅠ 처음 틀렸을 때 for문의 length를 잘못 설정해서 틀렸었는데, 고치고 IDE에서 돌려 보니 논리적인 문제도 있었다. 조금 더 세심하게 보자. 역시 자바는 Queue 클래스를 가지고 있고 그걸 알고 있었으나, 걍 개인적인 고집으로 쓰지 않고 논리적으로 풀려고 했던 것 같다. 결과는 시간과 메모리의 아작. 괜히 Queue 클래스 한 번도 안 써봐서 두려웠던 점도 있었다. 앞으로 또 그런 생각으로 안일하게 문제를 푼다면 걍 뒤질 것이다. 이번에도 역시 문제 이해만 해도 힘들었다...
2023. 03. 13 월요일 - [Java] 스택을 사용하는 방법? 특징? : Stack stack = new Stack(); stack.push(item) / stack.pop(); // stack이 비어있을 때 pop을 하면 예외 발생. stack.peek(); // 가장 마지막 원소를 반환해주지만, pop하진 않음. stack.contains(value); / stack.size(); / stack.empty(); / stack.clear(); - 스프링에서 테스트를 쉽게 만드는 단축키? : ctrl shift t // 해당 클래스 내에서 눌러야 한다. 해당 클래스 명 +Test 라는 테스트 클래스가 자동 만들어지며, 어떤 메서드를 넣을 것인지도 설정할 수 있다. - [Java] 테스트 케이스를 ..
너무 오랜만에 백준을 썼더니 클래스명에서 컴파일 에러를 내버렸다.. BJ_25556_FourStack 은 왜 클래스명에 맞지 않는 걸까? 간지나는 클래스명 짓기야말로 내 코딩 인생 우선 순위에서 pop() 할 관심사인데.. 기본적인 스택의 개념을 묻는 문제인 것 같다. 자바는 또 Stack이라는 클래스를 가지고 있어서 활용하기 알맞게 떠먹여 주고 있다. 우선 뭔 소린가 문제를 한참 봤다. 스택이니까 스택 개념은 관련이 있을 텐데.. 한참 보고 예제를 손수 해보니까 뭔 소린지 그제야 이해가 가더라. 문제를 다 이해하고 보니, 굳이 이게 스택 관련..? 수학적인 이해만 있으면 되는 거 아닌가..? 그래서 굳이 스택 클래스를 쓰진 않았다. 우선 킹모장에 첫 번째 예제를 써보고 순서대로 적어보았다. 오름차순 정..
2023. 03. 10 금요일 - [Java] String을 이어 붙이는 방법? : + / String str = text1.concat(text2); / StringBuffer sb.append(이어 붙일 텍스트); - [Java] Map을 내림차순으로 정렬하는 방법? : List list = new ArrayList(map.keySet/values()); Collections.sort(list, Collections.reverseOrder()); - [Java] 특정 변수가 0 이하로 내려가지 않도록, 혹은 특정 숫자 이상으로 올라가지 않도록? : val = Math.max(0, val-1); / 혹은 val = Math.min(array.length, val+1); - [Java] 옵셔널로 감싸진 ..
2023. 03. 09 목요일 - 별 찍기 다중 for문의 핵심 논리? : 바깥 for문의 I, 안쪽 for문의 j, 전체 줄 수의 n의 관계가 중요하다. I를 ++로 뒀다면 j는 점점 늘어나는 문자열에 대해선 I를 이용, 점점 줄어드는 문자열에 대해선 –i를 이용해야 한다. (단순히 등차라면 +, 등비라면 *) 이때 총 개수를 의미하는 n에 대해서도 적절히 사용해야 하는데, 특히 줄어드는 값에 대해서 “몇부터 시작해서 줄어들 것인가”의 몇에 해당하는 부분을 n으로 채워주자. 행(i) 관련하여 문자열이 증가하는가 감소하는가? -> 각 문자열의 초깃값은 무엇인가? 이해가 안 되면 그냥 숫자를 써놓고 문자로 치환하자. ex) I는 증가하는 값. j=0이고 j++이라면 결국 j
2023. 03. 08 수요일 - [Java] Set 배열로 바꾸는 방법? Integer Set을 int형으로 바꾸는 방법? : Set.toArray(new Ineteger[0]) // 원래는 괄호 안에 크기를 적어주어야 하지만, 저렇게 적으면 알아서 크기만큼 할당해 준다. // 이때는 Integer[] 가 된다. Set set = new HashSet(Arrays.asList(int[])); // 배열 -> Set Arrays.stream(Set.toArray(new Integer[0])).mapToInt(Integer::intValue).toArray(); // Integer 값을 모두 int로 바꿔야 하므로 map을 이용. https://gre-eny.tistory.com/25 - [Java] Co..
2023. 03. 07 화요일 - [Java] 달력 관련 클래스와 초기화 방법, 해당 달의 요일과 마지막 날을 아는 함수? : LocalDate LocalDate는 static이므로 초기화 방법은 LocalDate date = LocalDate.of(yyyy, mm, dd); 마지막 날을 return하는 함수는 date.lengthOfMonth() 해당 날의 요일을 아는 방법은 DayOfWeek 클래스를 사용하여 DayOfWeek dow = date.getDayOfWeek(); int dayNum = dayOfWeek.getValue();로 월요일부터 일요일까지 1~7 값이 매겨진다. - [Java] Math.random()의 범위 설정 방법? - [Java] printf나 String.format에서 ..
2023. 03. 06 월요일 - [Java] 콘솔 입력받는 방법 4가지? 1. System.in.read(); System.in.read(new byte[System.in.available()]); // 한 글자만 읽음. int로 받으려면 뒤에 -‘0’을 붙여줘야 함. // 엔터키를 쳐서 입력을 하는데, 이 방법은 엔터키가 잔류하므로 쓰지 않는다면 이후의 입력 코드에 영향이 간다. 따라서 뒤의 코드로 엔터를 소진시켜야 함. 2. InputStreamReader reader = new InputStreamReader(System.in); reader.read(char[]) // 여러 문자를 받아올 수 있지만 배열에 담아야 한다. 따라서 매개변수로 배열 입력. 배열 개수만큼 단어를 받는다. 3. Buffe..