본문 바로가기

전체 글

(174)
백준 1655 가운데를 말해요 문제 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 아이디어 처음에 접근법을 모르겠어서 인터넷에서 문제풀이 참고하여 풀었다. 만약 수빈이가 동생에게 1, 20, 9, 100, 30, 50 을 순서대로 외쳤다면 동생은 1, 1, 9, 9, 20, 20 을 차례대로 말했을 것이다. 그 다음 수빈이가 25를 말하면 동생이 25를 말할 것이다. 25는 지금까지 나온 수의 가운데 수이다. 25가 가운데 수인걸 어떻게하면 알 수 있을까?..
[TIL] 0806 Java 이것저것 배운 것 1. lombok annotation @AllArgsConstructor 모든 필드에 대한 생성자를 생성한다. @NoArgsConstructor 파라미터가 없는 생성자를 생성한다. @ToString toString() 메소드를 Override 해서 각 필드들을 출력한다. @EqualsAndHashCode equals() 메소드와 hashcode() 메소드를 Override 한다. @Getter Getter 메소드를 생성해 준다. @Setter Setter 메소드를 생성해 준다. @Data @RequiredArgsConstructor / @ToString / @EqualsAndHashCode / @Getter / @Setter 의 역할한다. 2. 객체지향 객체지향 프로그래밍 잘 하고싶다. 객체지향..
[TIL] 0805 Java Collection 배운 것 1. getter 로 필드 통제권을 다른 객체한테 넘겨주지 말자. 아래와 같은 객체가 있다고 가정하자. public class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } } Person 이라는 객체의 age 가 25세 이상인지 판단하려면 어떻게 해야할까? Person class 에 getAge 메서드를 만들고, Person을 사용하는 클래스에서 getAge 를 호출해서 사용해도 된다. 그러나 그렇게 사용하면 그렇게 된다면, private 으로 숨겨놓은 age 정보가 그대로 노출되는 것 과 다름없다. 그래서 getter로 모든..
[Design Pattern] 디자인 패턴 23 가지 디자인 패턴이란 디자인 패턴의 저명한 인사들이 내린 정의로, 소프트웨어를 설계할 때 자주 사용되는 패턴을 정형화한 것 이라고 할 수 있다. GoF : 특정한 상황에서 일반적 설계문제를 해결하기 위해 상호교류하는 수정 가능한 객체와 클래스들에 대한 설명. 라만(C. Larman) : 숙련된 객체지향 개발자 및 기타 소프트웨어 개발자는 소프트웨어 개발의 가이드라인이 되는 일반적인 원칙들과 관용적인 해결책들의 레퍼토리(repertorie)를 구축한다. 패턴은 이러한 원칙들과 관용적 해결책들이 문제와 해결책을 기술하는 구조적인 형태로 체계화되고 명명된 것. GoF의 디자인 패턴에서는 객체지향 디자인 패턴을 생성 패턴(Creational Patterns), 구조 패턴(Structural Patterns), 행동 ..
[Java] Java OOP(Object-Oriented Programming) 란 객체지향 프로그래밍 객체지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나로, 여래 개의 독립된 단위인 객체들로 프로그램을 구성하는 것이다. 객체는 작은 기능을 수행하고, 객체는 객체끼리 서로 협력하는 관계를 가진다. 즉 프로그램의 일을 잘게 나눈다음 객체에게 위임하고 객체끼리 서로 협력하게 만드는 것이라고 할 수 있다. 타입으로 객체를 구분할 수 있으며, 객체와 클래스가 가지는 차이는 아래와 같다. - 클래스 : 객체를 생성하기위해 속성과 행의를 변수와 메서드로 정의한 것을 의미한다. - 객체 (인스턴스) : 클래스를 실제 메모리상에 할당하고, 실제 프로그램에서 사용되는 데이터를 의미한다. 객체지향 특성 캡슐화 (Encapsulation) 캡슐화는 객체에 필요한 데이터나 기능을 책임이 있는 객체에 ..
[Java] Java Object Class Object Object 클래스는 모든 클래스의 최고 조상 클래스이다. 때문에 Object 클래스의 멤버들은 모든 클래스에서 바로 사용가능하며 Object 클래스는 멤버변수는 없고 오직 11개의 메서드만 가지고 있다. 이 메서드들은 모든 인스턴스가 가져야할 기본적인 것들이다. Object 클래스의 메서드 Object 클래스의 메서드 설 명 protected Object clone() 객체 자신의 복사본을 반환한다. public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다. protected void finalize() 객체 소멸 시점에 가비지 컬렉터에 의해 자동 호출된다. 이 때 수행되어야 하는 코드가 있을 때 오버라이딩 한다. public Class..
[Java] StringBuilder vs StringBuffer String C언어에서 문자열은 char형 배열로 표현하지만 자바는 문자열을 위한 String 클래스를 제공하며 java.lang 패키지에 포함되어 있다. immutable class String 클래스에는 문자열을 저장하기 위해 문자형 배열 참조변수(char[]) value를 인스턴스 변수로 정의해놓고 있다. 한번 생성된 String 인스턴스는 문자열을 읽어 올 수만 있고 변경은 불가능하다. 아래와 같은 코드를 실행하면 인스턴스내의 문자열이 바뀌는것이 아니라 새로운 문자열이 담긴 String 인스턴스가 생성된다. String a = "a"; String b = "b"; a = a + b; '+' 연산자를 사용해서 문자열을 결합하게 되면 매 연산마다 새로운 문자열을 가진 String 인스턴스가 생성된다...
[TIL] 0802 Java command line 에서 컴파일 및 실행하기 목표 Cmd 에서 자바클래스를 만들고 컴파일 및 실행하기 환경 JDK 1.8 / Mac OS 배경 지식 JVM JVM이란 Java Virtual Machine으로 자바 바이트코드를 실행하는 실행기로 Java Compiler는 .java 파일을 .class파일(바이트코드)로 변환 시켜준다. 이때 바이트코드는 기계어가 아니기때문에 os에서 바로 실행되지 않는데, JVM은 os가 바이트코드를 이해할 수 있도록 해석한다. (바이트코드는 JVM에서 os 상관없이 실행된다.) JVM은 크게 Class Loader / Runtime Data Areas / Excution Engine / Garbage Collector 4가지로 구성되어 있으며, 스택 기반의 가상 머신이다. .java 사람이 작성한 source cod..