전체 글

Algorithm/Programmers

[Programmers] 가장 많이 받은 선물

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 friends[]:친구 이름, gifts[]:선물 기록이 주어졌을 때 다음달에 가장 많은 선물을 받는 친구의 선물 개수 return 1. 이번달에 선물을 더 많이 준사람이 다음달에 선물을 받는다. 2. 이번달에 선물을 주고받은 개수가 같거나 하나도 주고받지 않는다면 선물지수가 낮은 사람이 높은 사람에게 선물을 준다. 선물지수 : 모든 친구들에게 준 선물 개수 - 모든 친..

Algorithm/Programmers

[Programmers] 도넛과 막대 그래프

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 무관한 정점을 생성한 edges에서 무관한 정점과 도넛, 막대, 8자 모양 그래프의 개수를 구하기. 1. 무관한 정점 찾기 : 정점에 들어오는 간선 == 0 && 나가는 간선 > 1을 충족해야 함 (예시 1번)의 4번 정점과 같이 들어오는 간선은 없지만 나가는 간선이 1개인 것은 막대 그래프일 수도 있기 때문 2. 그래프 개수 세기 : 정점에서 나가는 간선이 없고 들어오..

Algorithm/Programmers

[Programmers] 할인 행사

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131127# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 want[]:품목, number[]:품목별 개수, discount[]:할인품목 number의 총합은 10 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 일수 return. 각 want와 number를 hashMap에 저장 후 discount[]에서 0~9번까지 품목별 개수 -1해준다. index가 10이상일 경우 index-10에 해당하는 품목 개수 +1,..

Algorithm/Programmers

[Programmers] 상담원 인원

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/214288 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 k : 유형의 수, n : 멘토 총인원, req[][] : {시작시간, 진행시간, 유형} 이 매개변수로 주어진다. 시작시간은 중복되지 않으며 오름차순으로 정렬되어 있다. 멘토 인원을 적절히 배정했을 때 참가자들이 상담을 받기까지 기다린 시간을 모두 합한 값의 최솟값을 return해야한다. 각 유형별로 최소 1명씩은 멘토가 있으므로 유형별로 1명일 경우 기다리는 시간을 계..

AndroidStudio

[Android] MVC 패턴 (Model - View - Controller)

MVC 패턴이란? Model, View, Controller로 이루어진 패턴입니다. 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성요소에 집중하여 개발이 가능합니다. Model 애플리케이션의 데이터를 의미하며 데이터 처리를 담당합니다. View에서 데이터를 생성하거나 수정하면 Controller를 통해 Model을 생성하거나 갱신합니다. View 사용자 인터페이스의 요소입니다. 즉, 화면에 나타나는 UI를 의미합니다. Model을 기반으로 사용자가 화면을 볼 수 있고 변경이 일어나면 Controller에 알려줍니다. Controller 하나 이상의 Model과 View를 이어주는 역할을 합니다. Model과 View의 생명주기를 관리하며, 변경 알림을 받으면 각각의 구성 요소에 해당 ..

CS/Data Structure

[CS][Data Structure] 그래프 (Graph)

그래프란? 그래프는 노드와 간선으로 구성된 자료구조입니다. 간선은 노드를 직접 연결하며 방향의 유무와 단방향, 양방향에 의해 다양한 종류로 나눌 수 있습니다. 그래프의 구현 방법 인접 행렬 2차원 배열을 사용하여 두 노드간의 관계를 0과 1로 표현하는 방식 (노드 간 직접 연결 되어있으면 1, 아니면 0) 인접 리스트에 비해 구현이 쉬우며 모든 노드들의 간선 정보가 있기 때문에 간선의 존재 여부를 확인할 때 O(1)의 시간복잡도를 가집니다. 무조건 2차원 배열이기 때문에 메모리가 낭비될 수 있습니다. 인접 리스트 각 노드마다 직접 연결된 모든 노드들의 리스트를 저장하는 방식 노드들의 연결 정보를 탐색할 때 O(n)의 시간복잡도를 가지며 메모리 사용량이 적습니다. 인접 행렬보다 구현이 어렵고 간선의 존재 ..

Algorithm/Algorithm

[Algorithm] 이분 탐색 (Binary Search)

이분 탐색이란? 이분 탐색은 정렬된 데이터에서 원하는 값을 효율적으로 찾기 위한 검색 알고리즘입니다. 특정 데이터를 찾을 때 O(log n)의 시간 복잡도를 가지므로 빠른 속도로 찾을 수 있습니다. 이분 탐색 작동 원리 데이터의 중간 값과 특정 데이터와 값을 비교한다 중간 값이 특정 데이터 값과 일치하면 종료한다 중간 값이 특정 데이터 값보다 크면, 왼쪽부터 다시 이분 탐색을 한다 중간 값이 특정 데이터 값보다 작으면, 오른쪽부터 다시 이분 탐색을 한다 이분 탐색 활용 검색 정렬된 데이터에서 특정 값을 찾을 때 이분 탐색을 사용합니다. 최적화 최적화 문제에서 이분 탐색을 이용해 가능한 경우의 수를 줄일 수 있습니다.

Algorithm/Programmers

[Algorithm][Programmers] 베스트엘범 (Java)

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

CS/Data Structure

[CS][Data Structure] 해시 셋 (HashSet)

HashSet 이란? HashSet은 Set 인터페이스를 구현한 구현한 자료구조로, 중복된 데이터를 허용하지 않는 특징을 가집니다. HashSet 기본 원리 HashSet은 값을 저장할 때 내부적으로 HashMap을 사용하며 키로 사용할 객체와 함께 저장합니다. 값은 기존에 존재하는 동일한 객체를 나타내는 상수를 사용합니다. 이를 통해 HashSet은 중복된 데이터를 저장하지 않는 고유한 특성을 가집니다. HashSet 연산 삽입 : add(element) 삭제 : remove(element) 데이터 들어있는지 확인 : contains(element) 크기 확인 : size() 비어있는지 확인 : isEmpty() 전체 출력 : iterator() 또한 for(T element : set)으로 출력 Ha..

CS/Data Structure

[CS][Data Structure] 해시 맵 (HashMap)

HashMap이란? HashMap은 Hash Table을 구현한 Map으로 여러 개의 키-값 쌍을 빠른 검색과 삽입, 삭제가 가능한 자료구조입니다. HashMap 기본 원리 HashMap은 내부적으로 배열을 사용하여 해시 버킷에서 데이터를 관리합니다. 해시 함수는 키를 해시값으로 변환해주는 역할을 합니다. 이 해시값은 배열의 인덱스로 사용되며, 여러 키가 동일한 해시값을 갖지 않도록 최대한 분산되어 값이 저장될 수 있습니다. HashMap 연산 삽입 : put(Key, Value) 삭제 : remove(Key) 검색 : get(Key) 크기 : size() 비어있는지 확인 : isEmpty() 키가 있는지 확인 : containKey(Key) 모든 키 검색 : KeySet() HashMap 장점 Hash..

Jyuni
YunsLog