분류 전체보기
-
[프로그래머스] 여행경로 (07.15)algorithm/프로그래머스 2020. 7. 15. 18:43
문제 https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 접근법 백트래킹으로 해결했다. 도착지와 출발지를 비교해가면서 DFS로 배열을 순회한다. 순회를 하면서 모든 경로를 str이라는 배열에 이어붙여주고 모든 티켓을 사용하게 되면 str에 저장된 경로를 리스트에 저장해준다. 제한 사항에서 경로가 2개 이상이라면 알파벳 순으로 하라고 했기 때문에 Collections.sort를 통해서 배열을 알파벳 순으로 정렬해주고 경로를 배열로 바꿔 ..
-
JAVA - 1 ( JAVA 기초 )study/java 2020. 7. 13. 17:25
C/C++ 과의 차이점 - 실행 환경 - JAVA는 링크 과정이 없이 컴파일러가 바이트 코드를 생성하고, C/C++은 컴파일을 하고 난 후 링크 과정이 필요 - C는 절차 지향 언어이고 JAVA는 객체 지향적인 언어 - C는 임베디드나 운영체제처럼 속도나 용량 등에서 최적화가 필요한 곳에서 주로 사용하고, JAVA는 웹 사이트나 운영체제와 상관없이 실행되어야 하는 응용 SW, 안드로이드 앱 등에서 주로 사용 장/단점 장점 - 운영체제에 독립적 ( JVM 에서 동작하기 때문 ) - 객체 지향적인 언어 ( 캡슐화, 상속, 추상화, 다형성 등) - 가비지 컬렉터(GC)가 자동으로 메모리 관리 - 오픈 소스 라이브러리가 풍부 - 객체가 필요한 시점에 클래스를 동적 로딩하여 생성 단점 - JVM에 의해 기계어로 ..
-
[프로그래머스] 단어 변환 (07.13)algorithm/프로그래머스 2020. 7. 13. 16:01
문제 https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 접근법 먼저 당연히 DFS 일거라고 생각하고 풀었다. 백트래킹을 통해서 모든 배열을 확인하고, target에 도달할 때마다의 cnt 값들 중 최소값을 최종 결과로 리턴하였다. 다 풀고 다른 사람들의 풀이를 보는데 대부분의 사람들이 BFS로 풀었다. 그래서 나도 BFS로도 다시 풀어보았다. 방법은 비슷하였다. 코드 ..
-
CHAP1. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?book/모던 자바 인 액션 2020. 7. 13. 00:40
자바 역사상 가장 큰 변화는 자바 8에서 일어났으며 획기적이고 생산성이 바뀌었다. 자바 9와 10 역시도 변화가 있었지만 자바 8만큼은 아니었다. 이러한 변화들을 통해 프로그램을 더 쉽게 구현할 수 있게 되었다. 자바8이 등장하기 이전에는 - 코어 중 하나만을 사용( 나머지 코어들은 유휴 상태로 두거나 다른 용도로 사용 ) - 멀티 코어를 사용하기 위하여 스레드를 사용 ( 스레드를 사용하면 관리가 어렵고 많은 문제가 발생할 수 있음 ) 위 두 가지의 특징을 가졌는데 자바 8이 등장한 후로는 스트림을 이용하여 병렬 실행을 접근하는 방법을 제공하게 되었다. JAVA 8 에서 제공하는 새로운 기술 1. 스트림 API - 기존에는 한 번에 한 항목을 처리했지만 하려는 작업을 SQL 쿼리문처럼 고수준으로 추상화하..
-
[프로그래머스] H-Index (07.12)algorithm/프로그래머스 2020. 7. 12. 23:13
문제 https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 접근법 두가지의 방식으로 풀었다. 첫 번째 방식은 직관적으로 이중포문을 사용하여서 풀었다. 배열의 수를 정렬하고 큰 수부터 차례로 조건과 비교해나가면서 연산하였다. 두 번째 방식은 좀 더 규칙을 찾는데에 힘을 썼다. 첫 번째 방식과 마찬가지로 먼저 정렬을 하였다. 그 후 큰 수부터 차례로 비교하는데 h값은 점점 작아지고, 그..
-
[프로그래머스] 모의고사 / 가장 큰 수 (07.11)algorithm/프로그래머스 2020. 7. 11. 01:47
문제 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr 접근법 Level 1 문제여서 간단한 문제였다. 우선 수포자들이 찍는 번호가 지정이 되어있으므로 배열로 처리하여 반복문을 사용해야한다고 생각하였다. 반복되는 규칙과 규칙의 길이가 다른 부분을 어떻게 처리해주느냐가 가장 중요한 부분이었다고 생각한다. 코드 import java.util.Arrays; import java.util.LinkedList; i..
-
JAVA8 공부 시작book/모던 자바 인 액션 2020. 7. 11. 00:26
"모던 자바 인 액션" 이라는 책을 통해서 JAVA8을 공부하고자 한다. 책을 읽어가면서 내가 이해한 내용들을 블로그에 작성하여 정리할 계획이다. 우선 JAVA8의 변경 사항부터 살펴보자. 1. 람다식 : 함수를 따로 만들지 않고 매개변수와 실행문을 통해서 사용하는 방식이다. - 사용법 (매개변수, ... ) -> { 실행문 ... } - 예제 String[] strArr = {"5", "9", "3", "34", "30"}; Arrays.sort(strArr, (o1, o2) -> String.valueOf(Long.parseLong(o1+o2)) .compareTo(String.valueOf(Long.parseLong(o2+o1)))); 2. Stream API : JAVA에서는 데이터 저장을 위해 ..
-
[SPRING] JPA의 이해-3(ORM)study/spring 2019. 12. 27. 20:52
앞서 두 개의 글에서 객체 지향 프로그래밍과 관계형 데이터베이스에 대해서 정리를 했다. 2019/12/27 - [study/spring] - [SPRING] JPA의 이해-1(관계형 데이터베이스) 2019/12/27 - [study/spring] - [SPRING] JPA의 이해-2(객체지향 프로그래밍) 그 둘을 보면 참 다르다란 생각이 든다. 관계형 데이터베이스는 하나의 외래키만으로 참조하고 있는 테이블들의 데이터를 조회할 수가 있었는데 객체지향 프로그래밍은 클래스 내에 필드로 지정을 해야만 조회를 할 수 있었다. 그렇다고 외래키를 직접 정수형 혹은 문자형 타입으로 필드에 지정해놓기에는 객체지향으로써의 이점을 전혀 살리지 못한다. 테이블의 조인을 클래스에서 이용할 수 없고 클래스의 상속을 테이블에서 이..