Algorithm & Data Structure

    [JAVA] 프로그래머스 - 다트 게임 LV1

    [JAVA] 프로그래머스 - 다트 게임 LV1

    문제는 아래 링크를 통해 확인해주세요. https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 조건 및 설계 점수 : 0~10 보너스 : S(1), D(2), T(3) 옵션 : 옵션은 존재하지 않을 수도 있다. * : 위치 기준 i와 i-1를 2배 한다. (만약 i=0이라면 i만 2배한다.) *와 * 중첩 : 위와 마찬가지로 진행하면 된다. (결국 i-1의 score는 4배가 된 셈이다.) #와 * 중첩 : i-1에 대해서 -1배가 적용된 값에 그대로 2배를 적용한다. (-2배) # : 위치 기준 i에 -1배 한다.(즉 마이너스) 내 생각 길이 3인 int형 배열 score에 값을 넣어주..

    [Concept] 인접행렬과 인접 리스트(LinkedList, ArrayList)

    [Concept] 인접행렬과 인접 리스트(LinkedList, ArrayList)

    DFS와 BFS 문제를 풀기위해서는 무조건 알고 있어야하는 개념이 그래프입니다. 그리고 그래프를 구현하는 방법으로 인접행렬과 인접리스트가 있습니다. 이번 글에서는 각각의 장단점과 Java로 구현하는 것으로 마무리하겠습니다. (+LinkedList와 ArrayList의 장단점) 그래프 그래프란 요소들이 서로 복잡하게 연결되어 있는 관계를 표현하는 자료구조입니다. 그래프에서 쓰이는 용어는 정점 (vertex) : 노드라고도 하며 데이터가 저장되는 원소 간선 (edge) : 링크라고도 하며 정점 간의 관계 그외에도 인접 정점, 차수, 경로 등의 용어가 있습니다. 그래프 구현 그래프를 구현하는 방법은 배열(Array)을 사용하는 인접 행렬, 리스트를 사용하는 인접 리스트가 있습니다. 그리고 인접 리스트를 구현하..

    [JAVA] 프로그래머스 - 전화번호 목록 LV2

    [JAVA] 프로그래머스 - 전화번호 목록 LV2

    문제 이해 및 제한 사항 프로그래머스의 해시 문제, 전화번호 목록 LV2 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 매개변수로 주어지는 전화번호 목록에서 어떤 번호가 다른 번호의 접두사인 경우가 1개라도 있으면 false를, 그렇지 않다면 t..

    [JAVA] 프로그래머스 - 완주하지 못한 선수 LV1

    [JAVA] 프로그래머스 - 완주하지 못한 선수 LV1

    문제 이해 및 제한 사항 프로그래머스의 해시 문제, 완주하지 못한 선수 LV1 https://programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 ..

    [Concept] 인접 행렬과 인접 리스트

    [Concept] 인접 행렬과 인접 리스트

    그래프 그래프란 요소들이 서로 복잡하게 연결되어 있는 관계를 표현하는 자료구조입니다. 그래프에서 쓰이는 용어는 정점 (vertex) : 노드라고도 하며 데이터가 저장되는 원소 간선 (edge) : 링크라고도 하며 정점 간의 관계 그외에도 인접 정점, 차수, 경로 등의 용어가 있습니다. 그래프 구현 그래프를 구현하는 방법은 배열(Array)을 사용하는 인접 행렬, 연결 리스트를 사용하는 인접 리스트가 있습니다. 인접 행렬 그래프의 정점을 2차원 배열로 만들어서, 행과 열은 정점을 의미하며 각각의 원소들은 정점 간의 간선을 나타냅니다. 장점 2차원 배열에 모든 장점들의 간선 정보가 있기 때문에 두 정점을 연결하는 간선을 조회 시 O(1)의 시간복잡도로 가능합니다. 구현이 비교적 간단합니다. 단점 간선 수와 ..

    [프로그래머스] SQL 문제

    [프로그래머스] SQL 문제

    SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') ORDER BY ANIMAL_ID ASC; SQL 문제를 포함한 알고리즘 문항을 시험보는 곳이 꽤 있는 것 같아서 관련 자료 글을 찾아보다 프로그래머스에 있는 SQL 문제가 있어 문제와 답안을 기록하고 있다. 문제 리스트 (추가중) 고양이와 개는 몇 마리 있을까 동명 동물 수 찾기 입양 시각 구하기(1) 입양 시각 구하기 NULL 처리하기 이름이 있는 동물의 아이디 이름이 없는 동물의 아이디 루시와 엘라 찾기 오랜 기간 보호한 동물(2) (Lv 3) DATETIME에서 DATE로 형..