목록전체 글 (106)
모눈종이에 사각사각
github이란? git을 웹에 옮겨 놓은 원격 저장소 git은 로컬 저장소 github을 사용해야 공유(협업)가능 코드 복구 가능 add - staging area에 파일 추가 commit - staging area에 있는 파일을 로컬 저장소에 추가 push - 로컬 저장소에 있는 파일을 원격 저장소에 추가 -> git push [원격 저장소 이름] [원격 저장소 브랜치 이름] 참고사이트 https://youtu.be/Z9dvM7qgN9s
🌙 @Override @Override 어노테이션은 메서드 앞에만 붙일 수 있는 어노테이션으로, 조상의 메서드를 오버라이딩하는 것이라는 것을 컴파일러에게 알려주는 역할을 한다. 만약 Child가 Parent의 parentMethod()를 오버라이딩 하려고 할 때, 메서드 이름을 잘못 적었다면? @Override annotation이 붙어있었다면 이렇게 에러메시지를 출력한다. 그러나 만약 @Override 를 붙이지 않았다면? 컴파일러는 오버라이딩 한 메소드인지 알지 못해 잘못 썼는지 판단하지 못한다. 새로운 이름의 메서드가 추가된 것이라고 인식한다. 따라서 에러메시지가 출력되지 않는다. 📚 참고자료 남궁성, 『자바의 정석』, 도우출판
List에서 중복을 제거하려면 어떻게 해야할까? Set 이용하기 먼저 List를 Set으로 변경하여 중복을 제거해준다음 다시 List로 반환하는 방법이 있다. List list = List.of(1, 2, 3, 4, 5, 1, 1, 1); System.out.println("list = " + list); Set set = new HashSet(list); List list2 = new ArrayList(set); System.out.println("list2 = " + list2); /** * list = [1, 2, 3, 4, 5, 1, 1, 1] * list2 = [1, 2, 3, 4, 5] */ Stream의 distict() 이용하기 Java8부터는 Stream의 distict()를 이용해서 중..
문자열(String클래스) = 문자를 연이어 늘어놓은 것 = 문자배열(char배열) 자바에서 char 배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는? String 클래스가 char 배열에 여러 가지 기능을 추가하여 확장한 것이기 때문! char배열과 String 클래스의 가장 큰 차이점은, String객체(문자열)는 읽을 수만 있고 수정이 불가하다는 것이다! String str = "가나다"; str += "라마바"; System.out.println("str = " + str); 위의 코드를 실행하면 str = 가나다라마바 이렇게 나오기는 하지만, 이는 새로운 내용의 문자열이 생성되어 출력되는 것이다. String 클래스의 주요 메서드 중 몇 개를 살펴볼 것이다. String sub..
List.of() 코딩을 하던 중, List에 add()를 했더니 UnsupportedOperationException 예외가 발생했다. List에 add를 왜 못하지..? 라는 생각에 작업하던 List의 타입을 확인해봤다. java.util.ImmutableCollections$ListN ImmutableCollections라니! 원인은 내가 리스트를 생성할 때 다음과 같이 List.of()를 사용했기 때문이었다. List list1 = List.of(1, 2, 3, 4); List.of() 메서드는 Java9 부터 지원하는 메서드이며 Immutable한 Collection이다. 따라서 add(), remove(), set(), replace() 등의 작업을 할 수 없다. (UnsupportedOper..
🍎[백준 9081] 단어 맞추기 문제링크 https://www.acmicpc.net/problem/9081 9081번: 단어 맞추기 입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 하나의 단어가 한 줄로 주어진다. 단어는 알파벳 A~Z 대문자로만 이루어지며 항상 공백이 없는 연속된 알 www.acmicpc.net ⚾ 코드 c = int(input()) def solution(s): k = -1 for i in range(len(s)-2, -1, -1): # 뒤에서 부터 돌면서, i가 i+1보다 작은 문자를 찾는다. if s[i] < s[i+1]: k = i break if k == -1: # 그러한 문자가 없다면, 원래 문자가 가장 큰 것. return ..
🍎[백준 16235] 나무 재테크 문제링크 https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net ⚾ 코드 import sys input = sys.stdin.readline n, m, k = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(n)] nutrients = [[5]*n for _ in range(n)] # 양분 저장 trees =..
백준16926을 풀다가 deque에 rotate 메서드가 존재한다는 사실을 알게 되었다. 🍀 deque.rotate(num) deque.rotate(num) -> deque를 num만큼 회전시킨다. num이 양수일 경우, 원소들은 오른쪽으로 이동한다. num이 음수일 경우, 원소들은 왼쪽으로 이동한다. 다음과 같은 deque가 있다고 해보자. from collections import deque q = deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) rotate(2)를 해주면 양수이기 때문에 오른쪽으로 2칸 이동하게 될 것이다. q.rotate(2) 결과는 다음과 같다. [9, 10, 1, 2, 3, 4, 5, 6, 7, 8] 오른쪽으로 두 칸 이동한 것을 확인할 수 있다. 그렇다면..
"오버로딩과 오버라이딩의 차이가 무엇이죠?" 라고 물어오면 순간 당황한다. 분명히 알고 있는데, 내가 알고 있는 이 기능이 오버로딩인지, 오버라이딩인지 헷갈린다. 이 포스팅을 계기로 딱 기억하자. 오버로딩 -> 같은 이름, 다른 매개변수 오버라이딩 -> 상속, 재정의 🍀 오버 로딩 자바의 한 클래스 내에 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의하는 것이다. 매개변수가 다르면 이름이 같아도 서로 다른 메소드가 된다. 반면에 매개변수는 같지만 리턴타입이 다르면 오류가 발생한다. 또한 접근 제어자도 자유롭게 지정할 수 있지만, 접근 제어자만 다르다고 해서 오버로딩이 가능하지 않다. 상속의 관계에서도 오버로딩을 사용할 수 있다 오버로딩을 사용하..