전체 글 495

백준 2110번 공유기 설치 파이썬 풀이

문제 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오. 정답코드 # 공유기 설치 from array import array import sys N,C = map(int,input().split()) answer = 0 location_list = [] ..

CS/알고리즘 2022.04.26

백준 1654번 랜선 자르기 파이썬 풀이(feat. 메모리 초과 해결)

문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수길이만큼 자른다..

CS/알고리즘 2022.04.25

이진 탐색 알고리즘에 대해 알아보자

이진 탐색 알고리즘에 대해 알아보자 이진 탐색(binary search) ● 정의 - 정렬되어 있는 리스트에서 탐색 범위를 절반으로 좁혀가며 데이터를 탐색하는 방법 ● 특징 1. 배열의 내부 데이터가 정렬되어 있어야만 사용 가능 2. 변수 3개(start, end, mid)를 사용하여 탐색. 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복 비교하며 원하는 데이터를 찾는다. 3. 시간복잡도가 O(log N) 이다. ● 구현 코드 (Python) # 이분탐색 array = [4,3,5,1,2,6] # 정렬되지 않은 배열 array = sorted(array) # sorted 로 정렬하기 print("array:",array) def binary_search(array, target, start, end)..

CS/알고리즘 2022.04.24

Java Singleton 패턴이란? (feat. 스프링)

목차 정의 사용 배경 싱글톤 코드 예제 싱글톤 코드 특징 싱글톤 코드 단점 스프링에서의 싱글톤 지원 1. 정의 -말그대로 하나의 객체만을 생성해 이후 호출되는 곳에서는 생성된 객체를 반환하여 프로그램 전반에서 하나의 객체만 사용하게 하는 패턴 2. 사용 배경 -단순한 일을 하는 어떤 클래스가 있다고 가정해봅시다. 사용자는 이를 사용하기위해 객체를 만들 것입니다. 하지만 사용자가 만명이라면?? 만 개의 객체가 메모리에 할당되어야합니다. 이런식으로의 메모리 사용 낭비를 막기위해 싱글톤 패턴을 사용합니다. static 으로 메모리에 한번 올려놓고 하나를 돌려쓰는 것입니다. 3. 싱글톤 코드 예제 package hello.core.singleton; public class SingletonService { pr..

[자료구조] 힙(Heap)과 완전 이진 트리(Complete binary tree) 개념 및 구현

[자료구조] 힙(Heap)과 완전 이진 트리(Complete binary tree) 개념 및 구현 목차 1. 힙 2. 완전 이진 트리 3. 힙 구현 힙(Heap) 특징 1. 완전 이진트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. (*우선순위 큐: 데이터들이 우선순위를 가지고 있어, 우선순위가 높은 데이터가 먼저 나감.) 2. 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. 힙은 일종의 반정렬 상태(느슨한 정렬 상태) 를 유지한다 -큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다는 정도 3. 간단히 말하면 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰(작은) 이진트리를 말한다 힙 트리에서는 중복된 값을 허용한다 ( 이진 탐색 트리에서는 중복된..

CS/자료구조 2022.04.19

[Android java] nullPointerException오류 실수원인 참고

상황 1. String형으로 생성자에 저 값 두개를 넘겨 Dialog의 TextView에 넣어주려 하였습니다. 이후 Dialog안에 메소드를 만들어 두 값을 setText해주려하였습니다. 그러나 계속 nullPointerException오류가 발생하였습니다. TextView를 뷰바인딩 해주지 않았는지 계속찾아보았는데 그런 문제는 아니었습니다. 특이한 점은 밑에 tvRealCashFlow부분은 위에 보이는 1,163원 이라는 String형으로 받아온 것인데요 CharSequence로 에러가 뜨는 의문점이 들긴 했었습니다. 차이점이 보이시나요?? 네 맞습니다 첫번쨰의 setText메소드 안에 있는 tvRealCashFlow는 TextView입니다. setText(realCashFlow)로 받아온 값을 넣어줬..

백준 5430번 AC 파이썬 풀이 (시간초과 해결)

문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 수를 버리는 함수이다. 배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오. 정답코드 #AC from collections import deque import sys T..

CS/알고리즘 2022.04.18

알고리즘 구현 실수 유형 정리

1. 짝수 홀수 분기 처리 시 //이 아니라, %을 사용하기 def recursive(matrix,n): if n == 1: return matrix #elif n // 2 == 0: elif n % 2 == 0: matrix = recursive(matrix, n//2) return multi(matrix, matrix) else: matrix = recursive(matrix, n-1) return multi(matrix, initial_matrix) 2. 호출 두번 -호출코드를 엄청 밑에다 적어둬서 보이지 않았음.. #index 이므로 BFS(start_point[0] - 1, start_point[1] - 1, start_point[2]) #index 는 0으로 시작하므로 - 1 BFS(start..

CS/알고리즘 2022.04.15

[Android java] "Only the original thread that created a view hierarchy can touch its views." 해결

Only the original thread that created a view hierarchy can touch its views 원인: BackThread 에서 UI를 건들면 안되는데 건드려서 생긴 문제입니다. 해결방법 1.runOnUiThread runOnUiThread를 사용하여 메인 Ui 쓰레드에서 작업을 할 수 있습니다. 하지만 전역변수의 문제 등이 있었고 저는 Activty가 아닌 Dialog에서 백쓰레드 작업을 진행중이었어서 문제가 많았습니다. 저는 .runOnUiThread(java.lang.Runnable)' on a null object reference 에러가 발생하였습니다. if 문으로 null인경우 return해주면 오류는 해결할 수 있었지만, 어댑터가 들어있는 데이터를 인식하..

백준 11401번 이항계수3 파이썬 풀이

백준 11401번 이항계수3 파이썬 풀이 문제 자연수 n과 정수 k가 주어졌을 때 이항 계수 nCk를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오. 선제적으로 알고 있어야하는 개념 역원 그 수와 곱하면 곱셈 항등원(1)이 되는 수 모듈로 연산(Modulo Operation) 어떤 한 숫자를 다른 숫자로 나눈 나머지를 구하는 연산으로, 나머지 연산(mod)이라고 한다. ex) 18 (mod 5) = 3 ex) 7²²² mod 11 계산하기 7¹¹-¹ = 1(mod 11) 7¹⁰ = 1(mod 11) 7²²² = 7²²*¹⁰ x 7² (mod 11) = 49(mod 11) = 5(mod 11) 페르마의 소정리 여기 p가 소수이고 a가 정수라고 할 때 p에서 a^p와 a는 서로 합동이..

CS/알고리즘 2022.04.12