전체 글 100

[자료구조/알고리즘] 자료구조

자료구조란 특정한 상황에 데이터를 효율적으로 다루는 방법들 자바는 stack만 구현돼 있고 나머지는 인터페이스만 있음 Stack 선입후출 데이터를 하나씩 넣고 뺌 하나의 입출력 방향 재귀함수 ex) 브라우저 뒤로가기, 스택메모리 Queue 선입선출 데이터를 하나씩 넣고 뺌 두개의 입출력 방향 ex) 일상에서 대기줄, 인쇄대기 원형큐 Tree 단방향 그래프 하나의 뿌리로부터 가지가 뻗는 형태 비선형구조 레벨, 깊이, 부모노드, 자식노드, 형제노드, 리프, 루트 ex) 폴더 구조 Graph 여러 개의 점들이 서로 연결되어 있는 관계를 표현한 자료구조 직접적인 관계/ 간접적인 관계 정점(vertex), 간선(edge) 인접행렬, 인접 리스트 (인접 리스트는 메모리를 효율적으로 사용) 방문여부를 표시하는 데이터..

[자료구조/알고리즘] 재귀

분할정복에서 재귀함수가 쓰임 메모리를 많이 소요한다는 재귀의 단점을 보완하기 위해 동적프로그래밍을 사용 코딩테스트 문제 중에는 깊은 복사/옅은 복사를 구별하는 문제들 존재 String.contains() 같은 메서드는 내부적으로 순환을 하기 때문에 재귀와 같이 쓰면 복잡도가 매우 높아질 수 있음 - 재귀함수란 자기 자신 호출을 반복해서 호출하는 함수 - 재귀함수 장점 코드가 간결함 변수를 여러 개 사용할 필요가 없음 - 재귀함수 단점 코드의 흐름을 직관적으로 알기 힘듬 반복하여 메서드를 호출하면 스택 메모리를 많이 사용 - 재귀적으로 사고하는 법 재귀 함수의 입력값과 출력값 정의 문제를 잘게 쪼개기 문제를 쪼개고 경우의 수 나누기( ex) 더 이상 쪼갤 수 없는 경우/ 그렇지 않우 경우) 단순한 문제 해..

아직 파릇파릇한 Section1 회고

이제 한 달이 지났다니 시간 참 빠른 것 같다. 교육자님은 한 달만에 우리의 파릇파릇함이 사라진 것 같다고 하셨지만 난 그렇게 생각하지 않는다. 아직 기력이 충분하다! (마인드 컨트롤 중) 첫 한달은 그래도 적응할 수 있는 시간이였던 것 같다. 하루하루 헛되게 보내진 않았지만 전력질주를 하진 않았기 때문이다. 앞으로 스프링이 있는 섹션에 들어가면 복습하느라 여유가 없을 것 같으니 비교적 여유로운 지금 체력을 길러둬야 겠다. 이번 한 달 동안 내가 잘했다고 생각하는 점은 적극적으로 참여했다는 거다. 페어프로그래밍을 할 때는 네비와 드라이버를 철저히 나누려고 노력했고, 1일 1커밋 스터디에도 가입했다. 배운 내용을 복습하는 코드를 작성하거나 프로그래머스 문제를 풀었다. 반대로 못한 점은 완벽하다고 생각할 정..

기술면접 회고

선택했던 질문들 1. 자바 데이터 타입 중 기본형과 참조형의 차이에 대해 설명해주세요. 7. 자바 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 13. 컬렉션과 스트림의 차이에 대해서 설명해주세요. 1, 13번에 대해서는 크게 할 말이 없지만 개념이 순간 기억안나서 선택했다. 이번에 인터뷰어와 인터뷰이를 둘 다 해보니 개념을 알고 있는 건 기본이지만 평온하게 말하는게 중요한 것 같다. 너무 떨려 한다면 지식이 있더라도 잘 모르는 것 같다는 인상을 줄 듯 하다. 나머지 질문들도 생각해보고 구두로 설명하는 시간을 가져야겠다.

[Java] 심화(Effective) 문제풀이/ 18일차 기록 미완

1. incompatible types: OptionalInt cannot be converted to Integer https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html Integer (Java Platform SE 7 ) Returns the value obtained by rotating the two's complement binary representation of the specified int value right by the specified number of bits. (Bits shifted out of the right hand, or low-order, side reenter on the left, or high-orde..

[Java] 심화(Effective)

스레드(Thread) 정의 프로세스: 운영체제로부터 자원을 할당받은 작원의 단위 스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 메인 스레드와 작업 스레드 스레드를 생성하는 방법 Runnable 인터페이스 구현한 객체에 run() 구현 Thread 클래스 상속 받은 하위 클래스에서 run() 구현 스레드 메서드 이름 조회: 스레드참조값.getName() 이름 설정: 스레드참조값.setName() 스레드 인스턴스의 주소값: Thread.currentThread().getName() 스레드 동기화 필요성: 여러 스레드 동일한 데이터를 공유하면 데이터를 덮어쓰는 문제 발생 가능 임계 영역과 락, 키워드 syncronized 스레드 상태와 상태 제어 메서드 생성, 실행 대기, 실행, 일시 정지, ..

[Java] 심화(Effective)/ 16일차 기록

애너테이션(Annotation) 사람에게 주석으로 정보를 제공하듯이 프로그램에게 정보를 제공하는 용도 컴파일러에게 문법 에러를 체크하도록 프로그램 빌드할 때 코드 자동 생성하도록 런타임에 특정 기능을 실행하도록 표준 애너테이션/ 메타 애너테이션 표준 애너테이션: 자바에서 기본적으로 제공, ex) @Override, @Deprecated @FunctionalInterface, @SuppressWarning 메타 애너테이션: 애너테이션을 정의하는데 사용, ex) @Target, @Documented, @Inhreited, @Retention, @Repeatable 사용자 정의 애너테이션 람다(lambda) 함수형 프로그래밍 기법을 지원하는 자바 문법 함수형 인터페이스: 원하는 메서드를 람다식으로 사용하기 위..

[Java] 컬렉션 페어프로그래밍 회고/ 15일차 기록

컬렉션 파트 페어프로그래밍을 진행했다. 내가 드라이버를 맡았다. 드라이버를 맡은 적은 두 번째이다. 이번 페어분의 네비를 경험하니 내가 네비를 했던 방식과 겹쳐 보였다. 앞으로 네비를 맡았을 때 어떻게 해야하는지 구체적으로 생각해 볼 수 있었다. 전엔 네비를 맡았을 때 전체적인 수도코드를 알려주지 않고 바로 진행을 했었는데 드라이버는 어떤 방식으로 풀지를 모르니 왜 그렇게 해야 하는지 이해를 못 했을 것 같다. 나와 페어를 했던 분들에게 심심한 사과를,... 문제를 풀면서 collection과 map의 메서드들을 적용해 보는 경험을 했다. 이론 공부와 실습은 느낌이 확연히 다르다는 걸 다시금 느낀다. 이제 페어에 조금 적응이 된 것 같다. 다음 페어 활동도 기대하면서 글을 마친다.

[Java] 컬렉션

열거형(Enum) 개념 비슷한 상수의 모음 등장배경, 장점 상수명이 중복되는 경우 컴파일 에러 => 인터페이스 사용으로 구별 가능하지만, 타입 안정성 문제 발생(== 연산자를 사용하면 두 상수의 의미가 달라도 같게 표시함) => 객체 생성으로 해결 가능하지만 코드가 길어지고, 스위치문 사용불가 => enum을 사용하면 같은 값의 구별과 스위치문 사용이 가능함 문법 요소 enum 열거형이름 {상수명1, 상수명2, 상수명3, ...} 관례적으로 대문자로 작성 자동으로 0부터 정수값이 할당 제네릭 장점 한 클래스에 다양한 타입의 인자를 전달할 수 있음 제네릭 클래스 class {...} class {...} Type,Key,Value, Element, Number, Result 해당 클래스로 만든 모든 인스턴..

[Java] 객체지향 프로그래밍 심화/ 13일차 기록

다형성 다형성의 의미와 장점 한 타입의 참조변수가 여러 타입의 객체를 참조할 수 있음 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조할 수 있도록 함 코드의 유연성 의존성을 가진 클래스에서 의존하는 클래스의 하위 클래스 참조변수마다 메서드를 작성하지 않아도 됨 참조변수의 타입변환, 업캐스팅/ 다운캐스팅 상속관계를 전제로 함 업캐스팅은 생략해도 됨 다운캐스팅은 업캐스팅이 선행됐어야 한다는 전제가 있음 업캐스팅: 상위클래스 참조변수에 하위클래스 객체를 참조하는 것, 형변환 연산자 생략 가능 다운캐스팅: 하위클래스 참조변수에 하위클래스 객체를 참조하는 것 , 형변환 연산자 생략 불가능 instanceof 타입 코드가 복잡해지면 클래스들의 종속관계를 알기 어려울 수 있음 instanceof연산자는..