Print

    자바 주요 클래스

    Immutable - 생성 후 변경 불가능한 객체 - set 메서드가 없고 void 리턴 타입의 메서드도 존재하지 않음 - 멤버 변수 값 변경 불가능 - 종류 : String, Boolean, Integer, Float, Long 등 String - 문자열을 나타내는 클래스. 문자열과 관련된 작업을 위한 메서드 제공 - 모든 문자열 리터럴은 String 클래스의 인스턴스로 구현 - final 클래스이므로 상속 불가. 하위 클래스 가질 수 없음 - 인스턴스가 한 번 생성되면 그 값은 읽기만 가능하며 변경 불가 - 문자열 변경시 새로운 String 인스턴스가 생성되며, 기존 인스턴스는 Garbage Collector의 대상이 됨 - "+" 연산자를 이용하여 문자열 결합 가능. 다른 클래스 객체와 "+"를 사..

    객체 지향

    객체지향 프로그래밍(Object-Oriented Programming) - 실제 세계를 모델링하여 소프트웨어를 개발 - 현실 세계의 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의 객체(Object)로 표현 - 객체들 간의 상호작용을 통해 로직 구성 객체 지향 언어 종류 - Java, Python, C++, C# 등 객체 지향 프로그램의 특징 - 상태(데이터) 중심 - 개발의 효율성 및 편리성 높이는데 목적 - 프로그램 모듈 재사용 가능 객체(Object) - 상태를 나타내는 필드(변수)와 행동을 구현하는 메소드로 구성된 모듈 - 개발 시간(design-time)에는 레퍼런스 변수로 정의 - 실행 시간(run-time)에는 클래스의 인스턴스를 의미 - 실제 세계에 존..

    자바 기초

    - 객체지향 언어 - 플랫폼 독립적 - 컴퓨터 아키텍처와 관계 없이 JVM(Java Virtual Machine)이 실행 가능한 환경이면 어디서든 실행 가능 자바 프로그램 실행 절차 1. 자바 소스 코드(*.java)를 컴파일러가 중간 언어인 바이트 코드(*.class)로 바꾼다. 2. 바이트 코드를 자바 가상머신(JVM)이 실행한다. Garbage Collector - 여유 메모리 부족, 프로그램이 실행되지 않을 때 실행 - 힙 영역에서 더 이상 사용하지 않는 동적 할당된 메모리 영역을 찾아 해제 후, 다시 사용 가능한 자원으로 회수 기본 자료형(Primitive Type) - boolean(1byte), byte(1byte), short(2byte), int(4byte), long(8byte), fl..

    완전 탐색 문제 유형(2) - 왕실의 나이트

    # 현재 나이트의 위치 입력 받기 input_data = input() row = int(input_data[1]) # ord : 하나의 문자를 인자로 받아 유니코드 정수를 반환 col = int(ord(input_data[0])) - int(ord('a')) + 1 # 나이트가 이동할 수 있는 8가지 방향 정의 steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)] # 8가지 방향에 대하여 각 위치로 이동이 가능한지 확인 count = 0 for step in steps: # 이동하고자 하는 위치 확인 next_row = row + step[0] next_col = col + step[1] # 해당 위치로 이동이 ..

    완전 탐색 문제 유형(1) - 시각

    n = int(input()) count = 0 for i in range(n+1): for j in range(60): for k in range(60): # i, j, k를 하나의 문자열로 합친 후, # 합친 문자열에 3이 포함되어 있으면 true if '3' in str(i) + str(j) + str(k): count += 1 print(count)

    구현 문제 유형(1) - 상하좌우

    # N 입력 받기 N = int(input()) x, y = 1, 1 plans = input().split() # L, R, U, D에 따른 이동 방향 dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] move_types = ['L', 'R', 'U', 'D'] # 이동 계획을 하나씩 확인하기 for plan in plans: # 이동 후 좌표 구하기 for i in range(len(move_types)): if plan == move_types[i]: nx = x + dx[i] ny = y + dy[i] # 공간을 벗어나는 경우 무시 if nx N or ny > N: continue # 이동 수행 x, y = nx, ny print(x, y)

    그리디 문제 유형(3) - 모험가 길드

    public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int result = 0; // 총 그룹 수 int count = 0; // 현재 그룹에 인원 수 int[] arr = new int[N]; for(int i=0; i

    그리디 문제 유형(2) - 곱하기 혹은 더하기

    public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); int temp = 0; for(int i=0; i