백준 2613번 - 숫자구슬 java
백준문제풀이 2022. 1. 15. 22:44

문제 N개의 숫자 구슬이 과 같이 막대에 꿰어져 일자로 놓여 있다. 이들 구슬은 막대에서 빼낼 수 없고, 바꿀 수 없다. 이 숫자 구슬을 M개의 그룹으로 나누었을 때 각각의 그룹의 합 중 최댓값이 최소가 되도록 하려 하다. 예를 들어 세 그룹으로 나눈다고 할 때 와 같이 그룹을 나누면 그룹의 합은 각각 11, 15, 18이 되어 그 중 최댓값은 18이 되고, 과 같이 나누면 각 그룹의 합은 각각 17, 12, 15가 되어 그 중 최댓값은 17이 된다. 숫자 구슬의 배열이 위와 같을 때는 그룹의 합 중 최댓값이 17보다 작게 만들 수는 없다. 그룹에 포함된 숫자 구슬의 개수는 0보다 커야 한다. 각 그룹의 합 중 최댓값이 최소가 되도록 M개의 그룹으로 나누었을 때, 그 최댓값과 각 그룹을 구성하는 구슬의 ..

백준 10711번 - 모래성 java
카테고리 없음 2022. 1. 14. 19:48

문제 명우와 친구들은 여름방학을 맞이하여 해변가에 놀러가기로 했다. 이번에 여행을 떠난 해수욕장의 이름은 ALPS(Awsome Land & Poor Sea)이다. 해변가에서 수영복을 입은 미녀들에게 관심이 많은 원철이와는 달리 명우는 해변가의 모래에 더 관심이 많다. 해변가의 모래는 무한한 것들을 만들 수 있는 가능성을 내포하고 있다. 또한 이렇게 만들어진 작품이 파도에 의해 사라지는 모습은, 마치 자신이 가장 빛날 수 있는 시간을 알고 스스로 아름답게 산화하려는 것으로 보인다. 이런 완벽에 가까운 물품인 모래를 두고서 해수욕이나 헤엄을 치는 것은 인생을 낭비하는 것과 같다고 생각한다. 하지만 아무도 명우의 말에 공감해주지 못했고, 결국 명우는 혼자서 모래성을 만들었다. 다른 친구들이 혼신의 힘을 다해 ..

백준 1826번 - 연료 채우기 Java
백준문제풀이 2022. 1. 13. 19:25

문제 성경이는 트럭을 정글 속에서 운전하다가 트럭의 연료탱크에 갑자기 구멍이 나서 1km를 가는데 1L의 연료가 새 나가게 되었다. 이것을 고치기 위해서는 가장 가까운 마을에 가야 한다. 그런데 그냥 가다가는 중간에 연료가 다 빠질 수가 있다. 다행스럽게도 정글 곳곳에 연료를 채울 수 있는 주유소가 N개 있다. 그런데 정글 속에서 중간에 차를 멈추는 행위는 매우 위험한 행위이므로 주유소에서 멈추는 횟수를 최소화 하려 한다. 그리고 다행이도 성경이의 트럭은 매우 좋아서 연료 탱크에는 연료의 제한이 없이 많이 충분히 많이 넣을 수 있다고 한다. 각각의 주유소의 위치와, 각 주유소에서 얻을 수 있는 연료의 양이 주어져 있을 때, 주유소에서 멈추는 횟수를 구하는 프로그램을 작성하시오. 정글은 일직선이고, 성경이..

Android Notification 생성하기
개발/백준 프로필 2022. 1. 13. 15:35

지난 시간에 AlarmManager 를 활용한 데이터 가져오기를 구현했으니, 이제 Notification 을 통해 사용자에게 문제를 풀라는 알림을 보내는 기능만 남았다. 먼저 Android 에서 Notification 의 UI 구조에 대해서 살펴보자 필수 구성요소 선택사항 작은 아이콘 : setSmallIcon()을 통해 설정됨 앱 이름: 시스템에서 제공한다. 타임스탬프 : 시스템에서 제공하지만 setWhen() 을 사용하여 재정의하거나 setShowWhen(false) 로 숨길 수 있음 큰 아이콘: 선택사항이며 setLargeIcon()을 통해 설정된다. 제목: setContentTitle()을 통해 설정된다 텍스트: 선택사항이며 setContentText()를 통해 설정된다. 간단한 노티피케이션을 구..

백준 11562번 - 백양로 브레이크 Java
백준문제풀이 2022. 1. 12. 22:52

문제 서울 소재 Y모 대학교에서 대규모 공사를 진행하면서, 학교가 마치 미로처럼 변해버리고 말았다. 공사 이전까지는 어떤 건물에서 출발하더라도 다른 모든 건물로 갈 수 있는 길이 있었으나, 공사가 진행되면서 어떻게 한 건진 알 수 없지만 일방통행만 가능한 길이 많이 늘고 말았다. 컴퓨터과학과 학생 남규는 전공 수업을 듣고 교양 수업을 들으러 가던 중 길을 잃어 3일 밤낮을 헤매다가 공학관에서 종합관으로 가는 길은 존재하지 않는다는 결론을 내렸다. 3일 사이에 과제도 내지 못하고 출석도 하지 못해 학사경고 위기에 처한 남규는 전공을 살려 현재 일방통행인 길들 중 반드시 양방향으로 바꿔야만 하는 길이 몇 개인지 조사해 학교에 건의하기로 마음을 먹었다. 남규는 여러 건물들 사이를 직접 잇는 길들을 모두 조사했..

AlarmManager 를 이용한 프로필 업데이트
개발/백준 프로필 2022. 1. 12. 17:59

Android 에서 위젯을 생성하고, 30분마다 프로필을 업데이트 하게 하는 기능은 손쉽게 구현했다. 다음으로 하루동안 문제를 풀지 않았으면 오후 8시 즈음 노티피케이션을 생성하게 하는 기능 구현을 목표로 잡았다. solved.ac API 에서 오늘 문제를 풀었는지 여부를 반환해주는 API 는 제공하지 않으므로, 다음과 같은 방식으로 기능을 구현하기로 했다. 매일 12시 정각에 어제 문제 풀이 카운트 수를 업데이트해서 저장 -> 1월 10일 풀이 수가 599라면, 1월 11일 00시에 풀이 수 599를 로드해서 저장한다. 오후 8시에 풀이 카운트를 다시 불러와 아까 저장한 카운트와 비교해서, 똑같다면 노티피케이션 생성 -> 1월 11일 20시에도 풀이 수가 599라면, 오늘 하루 문제를 풀지 않았다는 뜻..

직렬화 (Serialization) 와 역직렬화 (Deserialization)
기타 2022. 1. 11. 18:39

Android 개발을 하다 보면 Intent 를 통해 다른 Android 컴포넌트에 정보를 전달해야할 때가 있다. 이 때 primitive Type 인 int, String, double 과 같은 데이터는 Intent 에 바로 담을 수 있는데, 객체를 통째로 넘기려면 해당 객체에 Serializable 인터페이스를 구현해야 하는 경우가 생긴다. 그렇다면 Serialization 이 도대체 뭘까? 직렬화와 역직렬화 Java나 Kotlin, Swift 같은 객체 지향 언어에서는 모든 데이터들을 객체로 표현한다. 그렇다면 Java 나 Kotlin 으로 만든 프로그램의 데이터 (객체) 를 외부로 전송하려면 어떻게 해야 할까? 기본적으로 Java 의 I/O 처리는 정수, 문자열, 바이트 단위의 처리만 지원하기 때..

쿠키, 세션, 캐시
네트워크 2022. 1. 11. 16:37

인터넷 서핑을 더 편하게 만들어주는 녀석들 이번 시간에는 쿠키, 세션, 캐시에 대해 알아보았다. 쿠키와 세션, 캐시는 우리가 인터넷 탐색을 더 쉽고 편하게 할 수 있도록 도와주기 위해 만들어진 것이다. 이것들이 없다면 쇼핑몰에서 페이지를 이동할 때마다 로그인을 하거나, 장바구니에 담긴 상품이 없어지는 등의 현상이 발생할 수 있다. 쿠키, 세션, 캐시에 대해 알아보기 전에, 먼저 이것들이 왜 만들어졌는지에 대해 알아보도록 하자. HTTP 의 특징 요즘 인터넷은 데이터를 주고받기 위한 규약으로 HTTP 라는 프로토콜을 사용한다. HTTP 의 특징을 한 번 살펴보자 Stateless 프로토콜 클라이언트의 상태 정보를 가지지 않음 클라이언트와 첫 번째 통신에서 데이터를 주고 받았다 해도, 두 번째 통신에서 이전..