가장 먼 노드 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 7. 30. 01:37

문제 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/49189 문제설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. v..

라면공장 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 7. 30. 01:23

문제 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42629 문제 설명 라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니다. 해외 공장에서는 향후 밀가루를 공급할 수 있는 날짜와 수량을 알려주었고, 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받고 싶습니다. 현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량(supplies), 원래 공장으로부터 공급받을 수 있는 시점 k가 주어질 때, 밀가루가 떨어지지 않고 공장을 운영하기 위..

도전과제 06 : 시크바와 프로그레스바 보여주기 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 7. 26. 15:55

도전과제 06 시크바와 프로그레스바를 표시하고 시크바의 값을 바꾸었을 때 프로그래스바의 값도 바뀌도록 만들어 보세요. 화면에 시크바와 프로그레스바, 그리고 입력상자를 배치합니다. 시크바의 값을 바꾸면 프로그레스바의 값도 바뀌도록 합니다. 시크바의 값을 바꾸었을 때 그 값이 입려상제에 표시되도록 합니다. 프로그래스바는 막대형을 사용합니다. 참고할 점 시크바의 값이 바뀔 때 그 값을 알려주는 콜백 메서드를 사용합니다. 시크바의 값이 바뀔 대 그 값을 프로그래스바와 입력상제에 설정합니다. 풀이 우선 메인 화면을 LinearLayout으로 설정한 후 상단에 시크바, 프로그레스바, 텍스트창을 삽입했다. 메인 액티비티에서 SeekBar Listener내의 onProgressChanged 메소드에서 프로그레스바와 텍..

도전과제 05 : 두 종류의 버튼 모양 만들기 (Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 7. 26. 15:18

도전과제 05 두 개의 버튼을 화면에 추가하고 버튼 모양을 각각 다르게 보이도록 만들어 보세요. 화면에 두 개의 버튼을 배치합니다. 첫 번째 버튼의 모양은 가장자리에 경계선만 보이도록 하고 경계선과글자색이 동일하도록 만듭니다. 두 번째 버튼의 모양은 배경색이 있고 모서리는 약간 둥글며 글자가 하얀색이 되도록 만듭니다. 참고할 점 드로어블 객체를 만들어 버튼의 배경으로 설정하면 버튼의 모양을 만들 수 있습니다. 드로어블을 XML로 정의할 때 버튼의 모양이 결정됩니다. 풀이 버튼 모양은 drawable 폴더에 두 개의 xml 파일로 정의하였다. 먼저 첫번째 버튼은 stroke를 사용하여 테두리를 주황색으로 만들었다. 두 번째 버튼은 Radius속성을 조절하여 둥글게 만들었다. 이후 버튼의 background..

도전과제 04 : SMS 입력 화면 만들고 글자의 수 표시하기(Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 7. 26. 01:06

도전과제 04 화면 위쪽에 텍스트 입력상자, 아래쪽에 [전송]과 [닫기] 버튼을 수평으로 배치해 보세요. MS로 문자를 전송하는 화면은 위쪽에 텍스트 입력상자, 아래쪽에 [전송]과 [닫기] 버튼을 수평으로 배치하도록 구성합니다. 텍스트 입력상자 바로 아래에 입력되는 글자의 바이트 수를 '10/80 바이트'와 같은 포맷으로 표시하되 우측 정렬로 하도록 하고 색상을 눈에 잘 띄는 다른 색으로 설정합니다. 텍스트 입력상자에 입력되는 글자의 크기와 줄 간격을 조정하여 한 줄에 한글 8글자가 들어가도록 만들어 봅니다. [전송] 버튼을 누르면 입력된 글자를 화면에 토스트로 표시하여 내용을 확인할 수 있게 합니다. 참고할 점 화면에서 '10/80 바이트'로 된 글자 부분을 가장 위쪽으로 배치합니다. 입력상자에 글자가..

도전과제 03 : 두 개의 이미지뷰에이미지 번갈아 보여주기(Do it 안드로이드 앱 프로그래밍) [JAVA]
코딩/Do it Android [JAVA] 2020. 7. 25. 19:51

도전과제 03 두 개의 이미지뷰를 한 화면에 보여주고 하나의 이미지를 두 개의 이미지뷰에서 번갈아 보여주도록 만들어보세요 화면을 위와 아래 두 영역으로 나누고 그 영역에 각각 이미지뷰를 배치합니다. 각각의 이미지뷰는 스크롤이 생길 수 있도록 합니다. 상단의 이미지뷰에 하나의 이미지를 보이도록 합니다. 두 개의 이미지 뷰 사이에 버튼을 하나 만들고, 그 버튼을 누르면 상단의 이미지가 하단으로 옮겨져 보이고 다시 누르면 상단으로 다시 옮겨지는 기능을 추가합니다. 참고할 점 이미지를 화면에 보여주기 위해서는 이미지뷰를 사용하며 태그는 를 사용합니다. 스크롤을 만들고 싶다면 뷰를로 감싸줍니다. 풀이 우선 res\layout 디렉토리에 있는 activity_main화면부터 보도록 하겠다.ConstraintLayo..

3. 자료구조 (3) - 힙, 구조체
알고리즘/스터디 2020. 7. 25. 02:14

힙 힙은 이진 트리에서 특정한 조건을 이룬 구조입니다. 이진 트리 T의 높이가 h라고 할때 h-1까지 완전 이진 트리이다. 모든 잎 노드는 깊이가 h나 h-1이다. 깊이 h의 모든 잎 노드들의 경로는 h-1의 모든 잎 노드보다 왼쪽에 있다. 힙은 역시 부분 순서 트리(Partial order tree)이기도 한데, 이는 모든 노드가 자식 노드보다 값이 크거나 같은 트리 ($key(parent)\geq key(child)$)입니다. -> 완전 순서 트리 (Total order tree) = 완전 정렬된 트리. 이진 탐색 트리에서는 중복된 값이 불가능하나, 힙에서는 가능합니다. 부모가 자식의 키 값보다 작은 최대 히프(max heap), 부모가 자식 노드보다 작은 최소 히프 (min heap) 두 종류가 존..

2. 자료구조 (2) - 트리, 그래프
알고리즘/스터디 2020. 7. 25. 01:28

트리 트리 = 노드(node)로 이루어진 자료 구조. 하나의 루트 노드가 존재하고, 이로부터 0개 이상의 자식 노드들이 존재합니다. 이 노드들이 서브트리(subtree)를 구성합니다. 루트와 서브 트리, 각각 노드들간은 간선(edge)로 연결되어 있습니다. 그래프의 한 종류로써 트리는 asyclic connected(undirected) graph, 사이클이 없는 비방향성 그래프입니다. 루트 노드 (Root node) : 부모가 없는 노드 (트리의 처음) 잎 노드 (Leaf node) : 자식이 없는 노드 (트리의 마지막들) 부모 노드(Parent node) , 자식 노드(Child node)의 관계가 있음 노드의 깊이(Depth) : 루트노드(0)으로부터 도달하기 위해 거쳐야 하는 간선의 수 (부모 노..

스티커 붙이기 (백준 18808) [JAVA]
알고리즘/문제풀이 2020. 7. 23. 03:02

문제 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2초 512 MB 469 261 226 61.413% 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연결되어 있다. 또한 모눈종이의 크기는 스티커의 크기에 꼭 맞아서, 상하좌우에 스티커가 포함되지 않는 불필요한 행이나 열이 존재하지 않는다. 아래는 올바른 모눈종이의 예시이다. 주황색 칸은 스티커가 붙은 칸을, 하얀색 칸은 스티커가 붙지 않은 칸을 나타낸다. 반면 아래는 올바르지 않은 모눈종이의 예시이다. 첫 번째는 윗쪽에 불필요한 행이 있고, 두 번째는 왼쪽에 불필요한 열이 있다. 그리고 세 번째는 스티커의 각..

탑 (프로그래머스) [JAVA]
알고리즘/문제풀이 2020. 7. 21. 14:19

문제 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 탑이 왼쪽으로 동시에 레이저 신호를 발사합니다. 그러면, 탑은 다음과 같이 신호를 주고받습니다. 높이가 4인 다섯 번째 탑에서 발사한 신호는 높이가 7인 네 번째 탑이 수신하고, 높이가 7인 네 번째 탑의 신호는 높이가 9인 두 번째 탑이, 높이가 5인 세 번째 탑의 신호도 높이가 9인 두 번째 탑이 수신합니다. 높이가 9인 두 번째 탑과 높이가 6인 첫 번째 탑이 보낸 레이저 신호는 어떤 탑에서도 수신할 수 없습니다. 송신 탑(높이..