전체 글 190

백준 4673번 셀프 넘버

[문제] https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net [풀이] numbers = set(range(1, 10000)) have_generated_num_set = set() for num in numbers: for n in str(num): num += int(n) have_generated_num_set.add(num) self_numbers = numbers - have_generate..

백준 2022.08.08

'22.08.01 ~ '22.08.05 (내일배움캠프 16주차) Weekly I Learned

How to record Weekly I Learned ? => 4F What is 4F? Fact : 이번주 있었던 일, 내가 한 일 Feeling : 나의 감정적인 반응, 느낌 Finding : 그 상황으로부터 내가 배운 것, 얻은 것 Future : 배운 것을 미래에 어떻게 적용할 것인가 1. Fact - 알고리즘 공부 시작 - 스프링 공부 다시 기초부터! 2. Feeling & Finding ◎ 알고리즘 공부 시작 알고리즘 공부를 시작했다. 정확히 말하면 시작했다기보다는 스파르타에서 제공해주는 강의를 보고 알고리즘이 이런 것이구나 하면서 경험을 해본 것에 더 가까운 것 같다. 알고리즘과 자료구조의 중요성에 대해서는 코딩 공부를 시작할 때부터 이미 알고 있었다. 코딩테스트를 통과하기 위해서는 반드시..

'22.08.05 Today I Learned

- JSON 파싱 및 ObjectMapper 1. JSON 파싱 및 ObjectMapper 클라이언트(브라우저)와 서버가 통신을 할 때 데이터를 전달하고 받을 때 사용하는 대표적인 방식이 요새는 JSON이다. JSON은 기본적으로 문자열의 형태를 띄고 있다. 이렇게 문자열의 형태를 띄고 있는 JSON을 자바 객체의 형태로 바꿔주는 것을 JSON 파싱을 한다고 한다. ◎ 그렇다면 파싱이란 무엇일까? 파싱: 다른 형식으로 저장된 데이터를 원하는 형식의 데이터로 변환하는 것 파싱은 서로 다른 형식의 데이터를 서로 이해하기 쉽게 하기 위해서 형식을 변환하는 것이다. JSON 파싱은 앞서 JSON을 자바 객체 형태로 바꿔주는 것이라 하였다. 그렇다면 당연하게도 객체를 만들어주기 위한 Class가 필요하다. 그래야..

'22.08.04 Today I Learned

- 알고리즘! 1. 알고리즘! 오늘은 알고리즘 문제를 풀어봤다. 아주 기본적인 난이도였고 본격적인 알고리즘 문제라고도 할 수 없는 문법을 물어보는 문제였지만 생각할 것들이 꽤 많았고 쉽지 않았다. 첫 걸음부터 쉽진 않지만 꾸준히 하다보면 실력이 성장할 거라 믿는다. https://moon-daniel.tistory.com/entry/%EB%B0%B1%EC%A4%80-4344%EB%B2%88-%ED%8F%89%EA%B7%A0%EC%9D%80-%EB%84%98%EA%B2%A0%EC%A7%80 백준 4344번 평균은 넘겠지 [문제 링크] https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에..

백준 1110번 더하기 사이클

[문제] https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net [내가 짠 코드] start = int(input()) num = start count = 0 # 원래 숫자로 돌아오는데까지 걸리는 횟수 while True: a = num // 10 # 두자리 숫자에서 10의 자리 숫자만을 얻음 b = num % 10 # 두자리 숫자에서 1의 자리 숫자만을 얻음 c = (a+b) % 10 # 문제 조건에 따라 앞자리 숫자 + 둣지라 숫자해..

백준 2022.08.04

백준 4344번 평균은 넘겠지

[문제 링크] https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net [내가 짠 코드] test = int(input()) # 테스트 케이스 횟수 for _ in range(test): nums = list(map(int, input().split())) avg = sum(nums[1:]) / nums[0] count = 0 # 평균 넘는 사람 세기 위한 카운트 for i in nums[1:]: if i > avg: count += 1 rate = (count / nums[0]) * 100 # 평균을 넘는 비율 print(for..

백준 2022.08.04

'22.08.03 Today I Learned

- 알고리즘 & 자료구조 1. 알고리즘 & 자료구조 오늘도 역시나 기본 알고리즘고 자료구조에 대해서 배웠다. 역시 어렵다. > 해쉬 해쉬테이블은 파이썬 기본 데이터타입 중 하나인 딕셔너리와 비슷하다. key와 value 한 쌍을 저장한다. key 값만 알아도 value를 알 수 있기 때문에 데이터를 조회할 때 속도가 아주 빠르다. 그런데 해쉬 테이블도 내부적으로는 배열을 이용하고 있다. 해쉬 테이블을 사용할 때 hash함수를 이용한다. 이것은 특정 문자열을 특정 숫자로 바꿔주는 역할을 하는 함수이다. 해쉬함수를 이용해서 얻은 숫자를 배열의 길이로 나눠주고 나온 나머지를 인덱스로 하여 배열에 저장해주면 된다. 그런데 만약 인덱스가 중복해서 나온다면 어떡해야될까? 이렇게 인덱스가 중복해서 나오는 경우를 충돌..

'22.08.02 Today I Learned

- 알고리즘 1. 알고리즘 오늘도 역시 알고리즘과 자료구조에 대해서 공부했다. 여전히 알고리즘과 자료구조는 굉장히 어렵고 머리가 지끈거린다. 그럼에도 피할 수 없다면 내가 여기에 적응하는 수밖에 없다. > 이진탐색 이진탐색은 특정 데이터를 찾는 방법 중 하나이다. 가령 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 이라는 배열에서 8이라는 데이터를 찾아야 한다면 방법이 여러개가 있을 것이다. 이진탐색은 절반씩 나눠서 데이터를 찾는 것이다. 우선 절반인 5보다 큰지 작은지 확인을 하고, 만약 크다면 그 이후부터는 6, 7, 8, 9, 10 에서 찾을 수 있다. 그럼 여기서 또 절반이 되는 8을 기준으로 큰지 작은지 확인을 하면 된다. (이 경우엔 8이 이미 나왔기 때문에 탐색을 멈추게 된다) 이..

'22.08.01 Today I Learned

- 알고리즘 시간 복잡도 & 공간 복잡도 - 점근 표기법 1. 알고리즘 시간 복잡도 & 공간복잡도 오늘부터 알고리즘과 자료구조 공부를 시작했다. 사람들이 자료구조와 알고리즘이 엄청 중요하다고 그러던대 오늘 처음으로 공부하니 멘붕의 연속이었다. 일단 자료구조가 굉장히 어려웠다. 아직 알고리즘은 시작도 안 한 거 같은데 말이다. 허헛. 그래도 거북이반의 한 사람으로서 느리더라도 꾸준히 공부하면 조금씩 성장할 것이라는 믿음을 가지고 공부를 해봐야겠다. - 시간복잡도 시간복잡도란 입력값과 문제를 해결하는데 걸리는 시간의 상관관계를 의미한다. 즉 입력값이 많아진다거나 다른 입력값이 들어왔을 때 알고리즘의 성능에 어떤 영향이 있는지를 측정할 때 사용되는 기준이 시간복잡도이다. 시간복잡도를 측정하는 방법은 다음과 같..

'22.07.25 ~ '22.07.29 (내일배움캠프 15주차) Weekly I Learned

How to record Weekly I Learned ? => 4F What is 4F? Fact : 이번주 있었던 일, 내가 한 일 Feeling : 나의 감정적인 반응, 느낌 Finding : 그 상황으로부터 내가 배운 것, 얻은 것 Future : 배운 것을 미래에 어떻게 적용할 것인가 1. Fact - 최종 프로젝트 마무리 2. Feeling & Finding 드디어 최종 프로젝트가 끝났다. 일단 박수! 👏👏👏👏👏👏 최종프로젝트 기간이 대략 5주 정도 된 것 같다. 그런데 이렇게 시간이 금방 갈 수 있다는 것이 정말 놀라웠다. 생각해보니 내가 훈련소 기간이 6주였는데 그 때는 정말 시간이 안 갔던 것에 비해 이번 5주는 정말 빠르게 지난 것을 보니 정말 프로젝트에 진심으로 몰입을 했다는 반증 아..