전체글397 [백준/BOJ] 17472번: 다리 만들기2 문제 https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 해설 문제를 읽어보면, 크게 3가지 과정을 나눠야하는 것을 알 수 있다. 섬을 구분짓는다. 섬을 잇는 다리를 놓는다. 모든 섬이 연결되었는지 확인 및 다리의 총 길이를 구한다. 단계별로 나가보자. 우선 섬을 구분지어야 한다. 나는 우선 섬으로 표시된 1을 전부 -1로 저장해주었다. 이후 BFS를 사용하여 섬에 번호(1, 2, 3, 4, . . .)를 붙여주었다. repe.. PS(Problem Solving)/BOJ 2022. 8. 25. [Android] TabLayout(탭 레이아웃) 구현 TabLayout 전에 Bottom Navigation에 대해 공부했던 적이 있다. Bottom Navigation은 말 그대로 하단 바였다. 이는 TabLayout의 일종으로 볼 수 있다. Bottom Navigation처럼 여러 개의 버튼이 있고, 각 버튼마다의 Activity 또는 Fragment를 보여준다. 구현 방법에 대해 알아보자. 1. XML 작성 xml의 Design에 가보면 Containers에 TabLayout이 있는 것을 확인할 수 있다. 이 TabLayout을 Activity에 넣으면, 자동적으로 3개의 아이템이 설정된다. 더 추가를 하고 싶다면 추가를 하면 되며, 각 버튼마다의 속성을 설정해준다. 2. 각 버튼에 따른 이벤트 설정 xml의 작성이 끝났다면 MainActivity에서.. Android 2022. 8. 24. [백준/BOJ] 10159번: 저울 문제 https://www.acmicpc.net/problem/10159 10159번: 저울 첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩 www.acmicpc.net 해설 전형적인 플로이드 와샬 알고리즘 문제이다. 플로이드 와샬 알고리즘을 사용하는 문제이므로 우선 물건의 개수만큼의 이중 배열을 선언한다. 나는 이 배열을 boolean 배열로 하였지만, 다른 배열로 하여도 설정만 잘하면 크게 상관없다. 물건 쌍의 개수를 입력받으면, 배열에서의 그 인덱스를 true로 한다. 이는 양방향이 아닌 1 > 2처럼 단방향이므로 한쪽으로만 정.. PS(Problem Solving)/BOJ 2022. 8. 24. [Android] ViewPager2 사용법 ViewPager란? 애플리케이션을 사용하다보면 위와 같이 페이지를 양옆으로 넘길 수 있는 스와이프 기능을 종종 볼 수 있다. 이를 ViewPager(뷰 페이저)라고 한다. 원래 ViewPager가 있었지만 단점이 있어, 이를 보완하기 위해 ViewPager2가 등장하였다. ViewPager2는 RecyclerView 기반으로 만들어진 컴포넌트이고, 사용법도 RecyclerView와 유사하다. RecyclerView와의 차이점은 RecyclerView는 페이지를 어느 정도 넘기면 그 위치에서 정지하지만, ViewPager2는 일정 이상 페이지를 넘기면 자동으로 페이지가 넘어가진다. 위를 보면 RecyclerView는 스크롤을 멈치면 그 자리에서 멈치지만, ViewPager2는 일정 페이지를 넘긴 후 손을.. Android 2022. 8. 23. [백준/BOJ] 2636번: 치즈 문제 https://www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 해설 판의 가장자리에는 치즈가 놓여있지 않다고 문제에 나와있다. 즉, (0, 0)의 위치 또는 각 판의 가장자리 어디서든 bfs 혹은 dfs를 이용하여 탐색을 해나가면 안에 공기에 접해있는 치즈만을 녹일 수 있다. 치즈가 전부 녹을 때까지 bfs를 수행해줘야 한다. 따라서 bfs를 한 번만 수행하는 것이 아닌, 모든 치즈가 사라질 때까지 반복을 해야 한다. 이를 알기 위해 bfs를 수행하는 과정에서 1(치즈)이.. PS(Problem Solving)/BOJ 2022. 8. 23. [백준/BOJ] 2493번: 탑 문제 https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 해설 탑이 n개 있고, 이 탑들은 좌측으로 신호를 보낸다. 좌측에 현재 탑보다 더 높은 탑이 있다면 신호를 받을 수 있고, 더 높은 탑이 없다면 신호를 받을 탑이 존재하지 않는다는 의미이다. 문제의 예시를 보며 차근차근 알아가보자. 맨 처음 탑은 좌측에 아무 것도 없기 때문에, 신호를 받는 탑이 없다. 즉 0을 출력한다. 이제 이 탑을 스택에 넣어줄 것이다. 높이가 9인 2번 탑에서 신호를.. PS(Problem Solving)/BOJ 2022. 8. 22. [Android] Bottom Navigation 사용하기 Bottom Navigation이란? 이름만 봐도 대충 감이 잡힐 것이다. 인스타, 카카오톡, 유튜브, 넷플릭스 등 다양한 곳에서 볼 수 있는 "하단에 있는 바"이다. 탭의 갯수는 3개 이하는 권장하지 않고, 5개를 초과할 수 없다. 또한 각 탭의 텍스트들은 너무 길어선 안되며, 크기를 기본 값보다 작게 하면 안된다. 단계 별로 사용법을 알아보자. 1. 탭 아이콘 추가 각 탭에 사용할 아이콘들을 drawable에 추가한다. 나는 간단한 예시를 들 것이기에 탭 3개를 기준으로 할 것이다. 무료 아이콘 사이트가 많으니 원하는 아이콘을 찾아보도록 하자. 2. 메뉴 resource 파일 생성 res -> New -> Android Resource File에서 menu 파일을 만든다. 이때 Resource typ.. Android 2022. 8. 21. [백준/BOJ] 1082번: 해킹 문제 https://www.acmicpc.net/problem/10282 10282번: 해킹 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면 www.acmicpc.net 해설 한 컴퓨터가 해킹당했고, 이 컴퓨터에 의존하는 컴퓨터들은 시간이 지남에 따라 전염되기 시작한다. 즉, 한 개의 루트 노드로부터 연결된 노드들이 전부 감염된다는 것이다. 이를 풀기 위해 다익스트라 알고리즘을 응용하였다. 다익스트라 알고리즘은 최단 경로를 찾는 알고리즘으로 PriorityQueue를 이용하여 수행해나간다. 하지만 이 문제에서 a, b는 두 번 이상 주어지지 않는다. 즉, 최단 .. PS(Problem Solving)/BOJ 2022. 8. 21. [Android] RecyclerView(리사이클러뷰) RecyclerView란? 스마트폰을 사용하다 보면, 여러 가지 항목들이 나열돼있는 목록 화면들을 볼 수 있다. 이러한 목록 화면을 만들 때 사용하는 것이 RecyclerView이다. RecyclerView를 정의해보자면, 사용자가 관리하는 데이터 집합을 각각의 아이템 단위로 구성하며 대량의 데이터 목록을 동적으로 표현해주는 뷰이다. Recycler를 해석해보면 재사용이듯이, RecyclerView는 재사용성이 좋다. RecyclerView의 구성 요소 RecyclerView를 이용하여 목록을 만들 때, RecyclerView 클래스만으로는 화면에 아무것도 출력되지 않는다. 다음과 같은 구성 요소를 이용해야만 원하는 목록을 만들 수 있다. ViewHolder : 항목에 필요한 뷰 객체를 갖는다. Adap.. Android 2022. 8. 20. [백준/BOJ] 1967번: 트리의 지름 문제 https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 해설 한 정점에서 가장 멀리 있는 정점은 원의 지름 즉, 테두리에 해당되는 정점이다. 따라서 한 정점에서 가장 멀리 있는 정점을 구한 후, 그 정점에서 가장 멀리 있는 정점까지의 길이가 곧 원의 지름이 된다. 우선 가장 멀리 있는 한개의 정점을 구해야 한다. 이때 어떠한 정점에서 출발을 하든지 간에 가장 멀리 있는 정점은 지름에 해당하는 정점 중 하나이다. 지름에 해당하는.. PS(Problem Solving)/BOJ 2022. 8. 20. [백준/BOJ] 2470번: 두 용액 문제 https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 해설 이분 탐색을 이용하여 해결할 수 있는 문제이다. 용액들의 특성값을 배열 혹은 리스트에 넣고, 이를 정렬시킨다. 이제 두 개의 포인터를 잡는다. 한개는 배열의 시작 위치인 0, 또 하나는 배열의 마지막 위치인 n - 1로 잡는다. list[start] + list[end]가 0보다 작다면, 두 수의 값이 0에 더 가까워질 수 있도록 start를 증가시켜준.. PS(Problem Solving)/BOJ 2022. 8. 19. [백준/BOJ] 3055번: 탈출 문제 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 해설 각 맵에 입력되는 정보 당 상태를 보자. D: 비버 굴 .: 빈 공간 *: 물 S: 고슴도치 X: 돌 고슴도치는 비버 굴로 이동해야 하며 물 또는 돌이 있는 공간은 지나갈 수 없다. 또한 물은 1분마다 인접한 칸으로 번져나간다. 즉, BFS를 두번 실행시켜야 한다는 것이다. 우선 각 빈 공간에 물이 몇 분이 지났을 때 차는지를 구하는 BFS를 수행한다. 이 과정이 끝났다면, 몇 분 후에 칸에 물이 .. PS(Problem Solving)/BOJ 2022. 8. 18. 이전 1 ··· 7 8 9 10 11 12 13 ··· 34 다음 728x90