목록분류 전체보기 (108)
모눈종이에 사각사각
🌙 String 클래스 1. String 클래스는 immutable(변경불가능한) 클래스이다. 한 번 생성된 String인스턴스가 가지고 있는 문자열은 읽을 수만 있고, 변경할 수 없다. '+' 연산자를 이용해서 문자열을 결합하는 경우, 인스턴스 내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String 인스턴스가 생성되는 것이다. 다음과 같이 코드를 작성해 보았을 때 기존의 a의 주소와 a+=b 연산을 마친 후의 a의 주소가 달라졌음을 확인할 수 있다. 2. 문자열의 비교 문자열을 만드는 방법은 두 가지가 있다. String s1 = "가나다"; // 문자열 리터럴 지정 String s2 = "가나다"; // 문자열 리터럴 지정 String s3 = new String("가나다"); // St..
파이썬에는 isalpha(), isdigit(), isalnum(), islower(), isupper(), lower(), upper() 등 문자열이 알파벳인지, 숫자인지 등을 판별해주는 함수가 있다. 자바에도 그러한 기능을 하는게 있다. Character.isAlphabetic(), Character.isLetter() // 문자인가?(한글 포함) Character.isDigit() // 숫자인가? Character.isLetterOrDigit() // 문자 또는 숫자인가? Character.isLowerCase() // 소문자인가? Character.isUpperCase() // 대문자인가? Character.toLowerCase() // 소문자로 Character.toUpperCase() // 대..
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] 오른쪽으로 두 칸 이동한 것을 확인할 수 있다. 그렇다면..