일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 자바리스트정렬
- 백준파이썬
- 리스트
- 백준
- disposableeffect
- 자바
- android
- list
- Python
- 프로그래머스
- Dependency
- 오블완
- 문자열
- 자바set
- Java
- Provider
- 자료형
- Kotlin
- ContentProvider
- filternotnull()
- 티스토리챌린지
- composelifecycle
- 파이썬
- programmers
- nullpointerexception방지
- Hilt
- compose
- 배열
- jetpack
- 파이썬문법
- Today
- Total
목록Practice (37)
study gomi

내 제출 - 숫자의 범위가 정해져 있어서 에라토스테네스의 체를 써서 전체 소수를 먼저 구해뒀다. (에라토스테네스의 체 설명 참고 : https://taetaegom.tistory.com/39) - 골드바흐의 체 함수 내에서 잘 못 짠 게 있어서 계속 수정을 했다. - 검사해야 하는 수는 그대로 두고 그 수의 절반 값 까지만 소수 -> 빼도 소수인지 확인하면 되는데 첨에 아무 생각 없이 비교 대상이 되는 소수 리스트 목록을 반으로 자르고 1~검사해야 하는 수를 비교했다. 오잉또잉...ㅋ - 그 다음에는 바보같이 break를 달아서 검사중인 숫자가 소수가 아니면 그냥 바로 과정이 끝나버리게 했다. - 여튼... 다시 보니 어려울 게 없는 건데 엄청 헤맸다. def sieve_of_eratosthenes(nu..
개념 출처 : chatGPT 코드 출처 : 이전에 다른 언어로 내가 작성해 뒀던 거 참고 더보기 - chatGPT는 최고의 선생님이다. - 그래도 문법에 관한 거 말고 공통적인 알고리즘 개념 같은 건 아직 대학생 때 썼던 책을 찾아보는 게 더 편하다. - 한 번 읽어봤던 거라 이해가 잘 된달까... 쩝 - 백준 풀다보니까 모르는 게 참 많다 싶다 😣😭😭😭 - 그래도 뭔가 맨날 풀어본 거 / 공부 한 거를 혼자 적어보니까 기억에 남긴 하는 것 같다 에라토스테네스의 체 - 에라토스테네스의 체는 소수를 찾는 가장 오래되고 효율적인 알고리즘 중 하나 - 특정 범위 내에서 모든 소수를 찾기 위해 사용된다. - 적당히 작은 숫자는 일일이 검사하는 게 더 나은 것 같다. 코드 넘 길어 - 0 - - 주요 아이디어는 ..

내 제출 - 물론 '단계별로 풀기'를 통해 쉬운 것부터 풀고 있긴 하지만... 근래 풀었던 것 중 가장 어려웠다. - 이전에 비슷하게 공약수 찾아서 푸는 문제에서 시간 초과가 떴었어서.. - 어떻게 해야 빠르게 답을 찾아내지...? 가 고민이었음. - 약수, 배수와 소수2 단계에서 이거랑 이전 문제(나무 심는 거였나...?)가 제일 어려운 것 같다. - 물론 코드 작성에 아주 복잡한 알고리즘 등이 필요한 건 아니었는데 접근이 어려운(?!) def is_prime(check_n): if check_n

내 제출 - 종이에 칸 나눠서 나무 위치 표시해보고... 동일 간격을 어떻게 유추해낸 걸까 생각해보니까 어케 어케 풀렸다. - 처음에 틀린 이유는 굳이 더 심을 필요가 없는 경우(나무 2그루)를 생각 못 했었다. - math 라이브러리의 gcd 구하는 메소드를 사용해도 될 것 같다. 나는 연습 차원... - 사실 문제를 이렇게 푸는 건지 긴가민가 해서 코드를 굳이 굳이 길게 작성한 것 같다. # 최대 공약수 구하기 def get_gcd(a, b): while b: if a > b: a, b = b, a b %= a return a # 심어져 있는 가로수의 위치가 주어진다. # 이미 심어져 있는 가로수의 수 N n = int(input()) # 가장 첫 번재 나무 front_tree = int(input(..

내 제출 - 정답이 맞긴 했는데... 뭔가 지저분하다... - 유클리드 호제법으로 구하는 게 익숙하지 않다.. for문이 더 편하다. - for문으로 최대공약수를 구하면 시간 초과가 나온다. # 기약분수의 분자 a와 분모를 뜻하는 b를 입력 받음 a1, origin_b1 = map(int, input().split()) a2, origin_b2 = map(int, input().split()) b1, b2 = origin_b1, origin_b2 b_multiple = b1*b2 while b2: if b1 > b2: b1, b2 = b2, b1 b2 %= b1 # 최소 공배수(lcm) => 이게 두 분수 합의 분모 b_sum = b_multiple // b1 # 두 분자 값의 합 a_sum = a1 *..

내 제출 - 바로 아래 코드는 python - c++ 코드는 이 글 제일 아래에 더보기를 누르면있다. # 첫째 줄에 카드의 개수 n,m이 주어진다. n, m = map(int, input().split()) # 둘째 줄에 카드에 쓰여 있는 수가 주어진다. # 입력 받은 카드들을 index 붙여서 순서대로 놓고 뽑기 위해 list 에 담음. card_list = list(map(int, input().split())) # 합들의 모음 card_sum = set() # 카드 리스트에서 순서대로 앞에서부터 카드 세 장 뽑을 예정 for i in range(len(card_list)-2): # 앞에서 card_list[i]번째까지 선택했으니까 다음 선택은 i+1번째 부터 가능. for j in range(i+1..

내 제출 - 집합(set)을 이용해서 약수들을 구했다. - 결과 출력은 format을 사용 - 입력마다 약수를 구해주어야 하므로 약수를 구하는 함수 작성 -> return은 정렬된 약수 목록 # 완전수? 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같은 경우 # 약수 구하기 def get_division_sorted(target): set_division = {1} # 자신을 제외한 약수들이 필요 # target//1의 연산 결과인 target 안 넣기 위해 2부터 loop for i in range(2, target // 2+1): if target % i == 0: set_division.add(i) set_division.add(target // i) return sorted(set_divis..

내 제출 - set를 사용했다. # 자연수 n과 k가 주어짐 n, k = map(int, input().split()) division_set = set() # n의 약수들 중 for i in range(1, n//2 + 1): if n % i == 0: division_set.add(i) division_set.add(n//i) division_list = sorted(list(division_set)) if len(division_list) < k: print(0) else: print(division_list[k-1]) 실행 결과 채점 결과