전체 글 211

[프로그래머스 level_3] 보행자 천국 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/1832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 설명] 카카오내비 개발자인 제이지는 시내 중심가의 경로 탐색 알고리즘 개발 업무를 담당하고 있다. 최근 들어 보행자가 자유롭고 편리하게 걸을 수 있도록 보행자 중심의 교통 체계가 도입되면서 도심의 일부 구역은 자동차 통행이 금지되고, 일부 교차로에서는 보행자 안전을 위해 좌회전이나 우회전이 금지되기도 했다. 복잡해진 도로 환경으로 인해 기존의 경로 탐색 알고리즘을 보완해야 할 필요가 생겼다. 도시 중심가..

[프로그래머스 level_3] 순위 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 설명] n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 resul..

[알고리즘] 플로이드와샬/FloydWarshall (Graph)

Floyd-Warshall(플로이드와샬 알고리즘)이란? - 그래프에서 모든 정점 사이의 최단거리를 구하는 알고리즘. - 음수 가중치에 대한 처리가 어려운 다익스트라 알고리즘에 비해 플로이드 와샬 알고리즘은 사이클이 없는 경우 음수 가중치 처리가 가능 - for문(반복문)을 vertex(정점)만큼 3번 돌기 때문에 O(n3)의 시간 복잡도를 가진다. Floyd-Warshall process - 2차원 배열의 크기만큼 배열을 선언해준다. (각 정점에서 모든 정점을 가는 최소거리를 표현해줄 것이다.) - 연결돼있는 부분을 표기해준다. - 시작 정점에서 목표 정점까지 바로 가는 거리보다 또 다른 정점을 거쳐 지나가는 거리가 짧으면 업데이트를 해준다. - 플로이드 워샬 알고리즘에서는 1부터 시작해서 n까지 순차적..

[프로그래머스 level_3] 등굣길 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 설명] 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = 4, n = 3 인 경우입니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 ..

[딥러닝 기초] Neural Network (use cancer dataset/classfication)

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.] 목표 - 유방암 데이터 셋으로부터 모델을 만들고 테스트 후 정확도를 확인한다. sklearn(Scikit-learn이란? - 파이썬에 있는 머신러닝 라이브러리 중 하나로, 분류(classification), 회귀(regression), 군집화(clustering), 의사결정 트리(decision tree) 등의 다양한 알고리즘을 적용할 수 있는 다양한 함수들을 제공하는 라이브러리 [공부 중 궁금했던 것과 사용한 함수들을 정리] 1. from sklearn.dataset import load_breast_cancer - 사이킷런에서 유방암 데이터를 로드 2. plt.boxplot(cancer.data) - canc..

[자바/java] stream사용해서 ArrayList<Integer>을 int[]로 반환하기

들어가기 앞서 자바 스트림이란? 자바 8부터 추가된 기능으로 함수형 인터페이스인 람다(lambda)를 활용할 수 있는 기술입니다. 장점 - 기존 배열이나 컬렉션을 반복문으로 순회하면서 하나씩 꺼내는 코드를 사용하지 않고 간결하게 표현 가능하다. - 멀티 스레드 환경에 필요한 코드를 작성하지 않아도 데이터를 병렬로 처리할 수 있다. 동작 단계 1. 배열이나 컬렉션으로 스트림을 생성(Stream Source) 2. 스트림을 필터링, 요소를 변환하는 중간 연산(Intermediate Operations) 3. 결과를 도출하는 단말 연산(Terminal Operations) [사용 예제] 1 2 3 4 5 6 7 ArrayList al = new ArrayList(); al.add(1); al.add(2); i..

[자바라이브러리] HashMap에 값 추가하기 응용 (Map.getOrDefault())

getOrDefault(Object Key, defaultValue) Object Key - 값을 찾을 key값 defaultValue - Key에 원래 값이 있다면 원래 값을 반환하고, 아니라면 defaultValue를 반환한다. [사용법] 1 2 3 String[] arr = {"hi", "world", "hi", "bye"}; HashMap hm = new HashMap(); for(String a : arr) hm.put(a, hm.getOrDefault(a, 0) + 1); //{hi = 2, world = 1, bye =1} cs 위에 사용법과 같이 put 즉, 값을 넣어줄 때 많이 사용하는 메서드이다.

[프로그래머스 level_3] 베스트앨범 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 설명] 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 ..

[jupyter notebook] Neural Network (use mnist dataset)

[해당 내용은 "텐서플로우로 시작하는 딥러닝 기초" 수업을 듣고 복습하는 의미로 올리는 글입니다.] mnist dataset란? - mnist가 가지고 있는 필기 숫자들의 28 x 28 픽셀 이미지를 보고, 0부터 9까지의 모든 숫자들에 대해 이미지가 어떤 숫자를 나타내는지 판별하기 위한 데이터 셋을 말한다. [수업 중 궁금했던 것과 사용한 함수들을 정리] 1. from tensorflow.keras.utils import to_categorical - to_categorical은 정수형 class vector을 binary class matrix로 변환시켜준다. 텐서의 표현에 맞게 적절히 변환한다는 표현이 맞는 것 같다. 즉, 7이란 값을 000000100이라는 이진수를 이용해 자릿수로 표현한다. 2...

[프로그래머스 level_3] 저울 for JAVA

https://programmers.co.kr/learn/courses/30/lessons/42886 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 설명] 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 합니다. 이 저울의 양팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같습니다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있습니다. 저울추가 담긴 배열 weight가 매개변수로 주어질 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값을 return 하도록..