목록java (21)
공부하는 스누피
멤버 클래스(member class) / 중첩 클래스(nested class) 다른 클래스 안에 정의된 클래스. 자신을 감싼 outer class에서만 쓰여야 하고, 그 외에 쓰임새가 있다면 top-level 클래스로 만들어야 한다. (클래스 파일 하나 더 만들란 얘기다.) 종류: static 멤버 클래스, non-static 멤버 클래스, 익명 클래스, 지역 클래스 static 멤버 클래스를 제외한 나머지는 다 inner class에 해당한다. 정적 멤버 클래스 (static member class) 다른 클래스 안에 선언되고, outer 클래스의 private 멤버에도 접근할 수 있다. 바깥 인스턴스와 독립적으로 존재할 수 있다. 멤버 클래스에서 바깥 인스턴스에 접근할 일이 없다면 정적 멤버 클래스로..
Encapsulation Class 안에 데이터와 기능을 담아 정의하고, 필요한 기능만 공개한다. 이때 중요한 데이터는 Access Modifier로 숨길 수 있다. public한 데이터를 최소화시키면 캡슐화가 잘 되어 있다고 할 수 있다. Inheritance 기존에 존재하는 객체의 속성과 기능을 상속받아 새로운 객체를 정의하는 것. 이를 통해 클래스를 재사용할 수 있다. Polymorphism 같은 타입 또는 같은 기능을 호출해서 다양한 효과를 가져오는 것을 의미한다. 대표적으로 overriding과 overloading을 예로 들 수 있는데, overriding은 같은 기능을 재정의 해서 클래스에 따라 다양한 효과를 가져올 수 있게 하였고, overloading은 같은 이름의 메서드에 파라미터에 따..
자바에서 문자열은 String 객체를 클래스로 명시해야 한다. 정수나 실수, 그리고 문자(char)도 primitive type에 포함되는데 왜 문자열은 primitive type에 포함되지 않는지부터 알아보자. 자바에서 primitive type은 공간을 효율적으로 쓰게 해 준다. 데이터 타입별로 값의 크기가 일정하기 때문이다. int형은 -2^32 ~ 2^32-1의 범위 안에서만 표현 가능하고, char형은 16비트에서만 표현할 수 있게 정해 둔다. 이렇게 값의 크기에 제한을 두면 메모리 상에 저장할 공간을 지정할 때 훨씬 쉬워진다. 더 이상 값의 크기가 변경되지 않으니 Stack 영역에 벽돌처럼 차곡차곡 쌓을 수 있을 것이다 (데이터를 효율적으로 보관할 수 있다). 하지만 크기가 변화무쌍한 데이터 ..
JAVA에는 일반적인 값을 저장하는 primitive data type이 8가지 있는데, 각 type은 고유한 크기를 가지고 있다. bool - 1bit (true, fault만 저장하기 때문) char - 2byte(16bit) -> 문자형 byte - 8bit short - 2byte(16bit) int - 4byte(32bit) long - 8byte(64bit) float - 4byte double - 8byte Implicit type casting 작은 타입은 큰 크기의 자료형으로 자동 형변환된다. 따로 명시하지 않아도 자동으로 수행된다. ex) int는 실수형으로 자동형변환될 수 있다. long var = 100; (4byte -> 8byte) float fvar = var; (8byte -..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 생각과정 - 팀원이 추가될 때마다 기존 팀원들과 추가된 팀원 상호간 더해지는 능력치를 추가 - 팀 구성이 완료되면 능력치 차이 최솟값 구하기 (dfs) 구현 package baekjoon; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class b14889 { public int minA = Integer.MAX_..
https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr 생각 과정 - 균형인지 테스트는 (의 개수와 )개수가 같은지 검사하는 메소드 check로 수행한다. - 올바른 괄호는 문자열의 첫 문자는 열린 괄호여야만 하고, 마지막 문자는 닫힌 괄호여야 한다. - 괄호 변환 알고리즘이 나와 있으니 그대로 따라 만들면 된다. - 재귀 함수는 받은 문자열을 문자열 u, v로 나누는데, u는 균형있는 괄호이고 더이상 나눠지지 않아..
https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 생각 과정 - 길이가 n인 문자열을 1개, 2개,,,, n개씩 끊어 문자열 리스트에 넣는다. - 다 넣은 후 리스트를 순회하면서 같은 문자열이 반복되는지 검사한다. - 반복이 유지되면 count를 늘리고, 종료되면 count한 값과 이때까지 중복이었던 문자열을 StringBuffer에 붙인다. - 반복하지 않는 경우는 count없이 StringBuffer에..
https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 생각과정 - 주어진 문자열에서 한 문자씩 읽어서 숫자인지 아닌지 확인한다. - 숫자를 char 단위로 받으므로 받을 때 버퍼에 append한다. - S, D, T 문자를 받을 경우 숫자 입력이 종료되었으니 버퍼를 비우고 점수를 배열에 저장한다. - 저장 위치는 index로, 점수가 새로 저장될 때마다 증가한다. - *, # 문자를 받을 경우 index-1위치에 해당하는 점수를 갱신한다. - * 문자는 이전 점수에게도 영향을 미치니 index가 0이 아닐 때만 index-2 위치를 갱신해준다. 구현 class Solution { pub..