본문 바로가기

전체 글101

[S4] 백준 2417 - 정수 제곱근 (python3) https://www.acmicpc.net/problem/2417 2417번: 정수 제곱근 정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오. www.acmicpc.net 해결방법 0과 n(n>=0) 의 중앙값의 제곱이 n과 같은지, 큰지, 작은지를 따져보며 q를 구해내는 해결 방법이다. n과 m의 중앙값의 제곱은 앞으로 'n과 m의 중앙제곱'이라고 부르겠다. 만약 0과 n의 중앙제곱이 n과 같다면 그 값이 정답이다. ( 0과 4의 중앙제곱 = 2, 2^2 = 4) 만약 0과 n의 중앙제곱이 n보다 크다면 mid와 n의 중앙제곱을 비교한다. 만약 0과 n의 중앙제곱이 n보다 작다면 0과 mid의 중앙제곱을 비교한다. 위 조건문 안에서는 low와 high를 업데이트 해주는 작업도 반드시.. 2023. 1. 19.
[S3] 백준 2512 - 예산 (Python3) https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 해결방법 이분 탐색으로 풀이한다. 풀이👀 최소값과 최대값을 lo와 hi라고 하고, 그 안에서 binary search를 한다. 동작 과정은 아래와 같다. mid = (lo + hi) // 2 라 한다. ① mid를 상한액으로 지정한 뒤, 지방의 예산요청을 계산하여본다. 만약 합산한 게 국가예산을 넘어서면 hi = mid로 하여 다시 계산하고, 반대로 국가예산보다 적다면 lo = mid로 하여.. 2023. 1. 18.
23/01/17 7번째 모임 지난 모임 이후의 활동 리뷰 버튼을 누르면 다른 액티비티로 연결이 되어야 하는데, 그런 연결을 해줄 코드를 추가해놓지 않아서 추가하는 작업을 했다. Intent를 이용해서 액티비티를 화면에 띄우는 작업인데, 간만에 하려니 손에 잘 익지 않아 블로그들을 자주 찾아보며 작업했다. StartActivity(Content content, Intent intent, Bundle bundle) StartActivity(Intent intent) 메소드가 내 마음대로 작동하지 않아서 골머리를 앓고 있었는데, ViewHolder 안에서 Intent를 새로 띄우기 위해서는 앞 메소드가 아니라 위의 StartActivity를 사용해야 한다는 사실을 알고 아래처럼 얼른 고쳤다. public ViewHolderSearchGr.. 2023. 1. 17.
[S2] 백준 1012 - 유기농 배추 (Python3) https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 해결방법 배추가 상하좌우로 모여 있는 곳 하나당 필요한 배추흰지렁이 수가 된다. 그러므로 이렇게 모여있는 군집이 몇 개 인지만 파악하여 출력하는 것이 목표이다. 파악하는 방법은 DFS, BFS 등이 있는데 이 글에선 BFS를 다루고 있다. grid를 일일이 탐색하다가 배추가 있는 자리라고 표시해둔 곳을 마주치게 되면, BFS를 통해서 상하좌우에 위치한 배추들을 0으로 바꾸어준다. 0으로 바꾸는 이유는 '탐색을.. 2023. 1. 15.
[S2] 백준 11568 - 민균이의 계략 (Python3) https://www.acmicpc.net/problem/11568 해결방법 최장 증가 부분 수열(LIS, Longest Increasing Subsequence)의 기초 문제이다. 이전에 이 시리즈를 풀어본 경험이 있어서 풀이의 틀은 쉽게 잡았다. 나는 시간복잡도가 O(n^2) 인 알고리즘으로 문제를 풀었다. arr의 길이가 최대 1,000 이므로 O(n^2)은 1,000,000이라 제한시간(1초) 안에 충분히 통과가 가능하다. 더 빠른 방법은 O(n log n) 있다. n=1000 일때, n log n = 3000 이므로 더 빠르게 통과할 것이다. 풀이 이 문제의 풀이는 arr에 있는 각 원소를 주목해야 한다. arr에 있는 원소들을 반복문으로 앞에서부터 차례차례 접근할 것이다. 이때 그 원소가 이 .. 2023. 1. 15.
안드로이드 작업을 하면서 모르거나 실수했던 내용들 학습동아리 진행 하면서 계속 수정해나갈 예정(2023.01.15 ~ 버튼 shape, 색상이 적용이 안 될 때 : 여기 [안드로이드] 버튼 색깔 바꾸기 추가 : https://devshin93.tistory.com/112 ㄴ 공부하면서 알게 된 것. 아래 본문처럼 하면 안드로이드의 기본 테마가 모조리 바뀌어 버려 정신 없는 경우가 발생할 수 있다. 따라서 112번 게시글에서 소개 devshin93.tistory.com 앱 실행 했을 때, 상단에 titleBar 없애는 설정: res - values - themes 에 style 안에 아래 코드 추가하기 false true ViewHolder 는 MainActivity 클래스의 이너클래스로 넣지말고 그냥 같은 파일안에 추가해주기. (만약 여러 개의 view.. 2023. 1. 15.
23/01/15 6번째 모임 지난 모임 이후의 활동 리뷰 오늘 모임은 짧은 기간을 두고 만난 탓에 별다른 활동은 하지 않았다. Todo list 오늘은 각자의 프로젝트를 하나로 합치는 활동을 했다. 창피한 얘기지만 우리 팀에서 팀장밖에 github을 다룰 줄 몰라서 각자의 프로젝트를 하나로 합치는 일을 팀장이 혼자 했다. 중간중간 생기는 작은 일들도 팀장이 신경을 써주느라 많이 고되 보였다. 일단 나라도 github desktop이든 뭐든 일단 제대로 알아둬야겠다고 생각이 들었던 순간들이었다. 오늘의 소감 일단 각자의 코딩 스타일이 달라 걱정이 된다. 각자 명명하는 법이 제각각이라서 걱정이 된다. xml(layout) 파일 이름이 정신없다. 이걸 어떻게 알아보고 어떻게 쓸지 너무 걱정된다. 한 프로젝트 당 package를 따로 할당.. 2023. 1. 15.
[S3] 백준 21921 - 블로그 (Python3) https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 해결방법 구간 합 중 가장 큰 값이 무엇이며, 그 값이 몇 번 나오는지 파악해야 하는 문제로 누적합과 슬라이딩 윈도우를 이용할 줄 알아야 한다. 코드 N, X = map(int, input().split()) arr = list(map(int, input().split())) prefix = [0] for i in range(N): prefix.append(prefix[i] + arr[i].. 2023. 1. 14.