항해99 2기
-
[Python] 백준 1110 더하기 사이클Python_알고리즘 2021. 6. 26. 22:26
문제 바로가기 문제분석 # 각 자리의 숫자의 십의자리, 일의자리를 따로 떼서 새로운 수를 만들고 그 수를 다시 새로운 수로 반환하여 처음 입력된 숫자와 동일해지기까지의 횟수를 구하는 문제이다. # 문제의 핵심은 조건이 참인 동안에 무한 루프를 돌리고 if문으로 탈출조건을 만들어 주는 것이다. 문제풀이 # 숫자로 계산 n = int(input()) #들어온 수를 모두 숫자로 변환 num = n #나중에 계산한 값을 다시 새로운 수로 받아야 하니까 변수로 저장 count = 0 #사이클 수 세는 변수 저장 while True: #조건이 참인 동안에 계속 반복 a = num // 10 #들어온 수의 십의자리 b = num % 10 #들어온 수의 일의자리 c = (a + b) % 10 #새로운 수를 만들기 위해..
-
[항해99]알고리즘_08sparta/알고리즘 2021. 6. 22. 20:01
[Python] 백준 2231 분해합 문제분석 # 이전에 풀었던 셀프함수 문제와 유사하다. # 셀프함수 문제는 생성자가 없는 수를 구하는 것이었고, 이 문제는 어떤 수가 주어졌을때 생성자가 있다면 가장 작은 생성자를, 없다면 0을 출력하는 문제이다. # 분해합이란 생성자와 생성자의 각 자릿수의 합으로 만들어진 수. # 예를들어, 245의 분해합은 245+2+4+5의 값인 256이 된다. 245는 256의 생성자, 256은 245의 분해합이다. # 입력값으로 분해합을 받고, # 해당 분해합의 범위까지 생성자를 찾기 위해 for문을 돌린다. # 분해합을 만드는 코드를 통해 생성자를 찾아낸다. # 이때 if문으로 분해합과 입력받은 값이 같은지 확인하고, 맞다면 해당 분해합을 만든 생성자(i)를 출력한다. # ..
-
[항해99]알고리즘_07sparta/알고리즘 2021. 6. 22. 01:02
[Python] 백준 2630 색종이 만들기 문제분석 # 분할정복(Divide and Conquer) - 주어진 문제를 작은 사례로 나누고(Divide) 각각의 작은 문제들을 해결하여 정복(Conquer)하는 방법 - 재귀적으로 자신을 호출하면서 그 연산의 단위를 조금씩 줄여가는 방식 # 한변의 길이 n을 입력값을 받고 # 변수를 하나 선언해서 두번째 입력값(각 색종이들의 숫자)을 리스트 형식으로 받는다.(이중리스트) # 각 종이를 확인하여 0이나 1만 가지고 있는 색종이 발견시 추가할 리스트(result)를 초기화 한다. # 재귀함수를 이용해 반복문을 돌면서 시작점과 x,y,n까지의 숫자를 비교했을 때 같은지 확인한다. # 시작점과 반복문으로 돈 입력값의 숫자가 같다면, 초기화 한 result 리스트에..
-
[항해99]알고리즘_06sparta/알고리즘 2021. 6. 21. 09:00
[Python] 백준 18258 큐 2 문제분석 # 파이썬은 collections모듈의 deque(double-ended queue)을 통해 큐 자료구조 구현 # 보통 큐는 엘리먼트 삽입 · 삭제 방향이 한방향으로 정해져 있지만 덱은 양쪽에서 삽입 · 삭제 가능. # 양 끝 엘리먼트에 접근하여 삽입 · 삭제할 경우, 일반적인 리스트가 O(n)이 소요되는데 반해, 덱은 O(1) 소요. # 임포트(import) 해서 사용. 명령 deque로 구현 설명 deque() 초기화 함수로 iterable(리스트 등)을 인자로 받으면 이를 deque화 시킴 push X que.append(X) deque의 append 메소드 사용으로 덱의 오른쪽에 X추가 pop que.popleft() deque의 popleft() ..
-
[항해99]알고리즘_05sparta/알고리즘 2021. 6. 20. 18:06
[Python] 백준 1021 회전하는 큐 문제분석 # 파이썬은 collections모듈의 deque(double-ended queue)을 통해 큐 자료구조 구현 # 큐는 선입선출 방식이지만 덱은 양방향에서 삽입과 삭제 가능 # 그럼 그냥 리스트를 쓰면 되지? -> 리스트는 배열의 형태이기 때문에 index 의 앞 부분에서 삽입과 삭제가 일어나면 삭제된 곳을 채우기 위해 그 뒤 엘리먼트들이 앞으로 모두 움직이면서 시간복잡도가 O(n) 시간복잡도 참고 https://wiki.python.org/moin/TimeComplexity Deque 메소드 참고 https://docs.python.org/3/library/collections.html#collections.deque -> 덱은 데이터 추가 삭제 시 ..
-
[항해99]WEEK2-WILsparta 2021. 6. 20. 12:31
WEEK2. 알고리즘 주간을 거치며 항해99 2주차가 끝났다. 알고리즘 주간을 들어가면서 또 한번 좌절을 경험했다. 알고리즘을 풀기는 커녕 여러 사람들의 답지를 보며 문제 자체를 해석하는 수준이라 이게 맞는건지 끊임없이 의심이 들었다. 그럴때마다 매니저님과 튜터님에게 상담을 받았는데 돌아오는 말은 같았다. 알고리즘을 처음 하는 사람들이라면 그렇게 시작하는게 당연하고, 답지를 보고 문제를 풀이하는 것. 이 또한 학습이다. 꾸준한 문제풀이로 익숙해지는게 답이다. 그렇다. 나는 지금 이 모든 학습들이 처음이다. 자꾸 조급해하는 나를 보면서 욕심이 지나쳤구나 생각이 들었다. 잘하고싶은데 아직 그럴 실력은 아니니 그런 내 모습에 실망이 커져갔고, 좌절감은 여기서부터 시작됐다. 내 기대치와 실제 실력이 맞지 않을때..
-
[항해99]알고리즘_04sparta/알고리즘 2021. 6. 18. 21:09
[Python] 백준 10828 스택 문제분석 # 파이썬은 스택 자료구조를 따로 제공하지 않고, 기본 클래스인 리스트나 링크드리스트를 통해 구현한다. # 스택 (last In First Out) push(data) 스택의 가장 최상위(마지막)에 데이터 삽입 pop(): 스택의 가장 최상위(마지막)에 데이터 추출 후 스택에서 삭제 isEmpty 스택이 empty 상태인지 여부 반환 peek 스택의 가장 최상위(마지막)에 위치한 데이터 추출 pop 메서드와는 달리 스택에서 데이터를 삭제하지 않음 # push X: 정수 X를 스택에 넣는 연산이다. # pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력. # size: 스택에 들어있는 정수..
-
[항해99]알고리즘_03sparta/알고리즘 2021. 6. 17. 18:43
[Python] 백준 10250 AMC호텔 문제분석 # 각 층에 W개의 방이 있는 H층 건물 # 방 번호는 YXX, YYXX로 하는데, Y는 층수를 뜻하며 X는 엘베에서부터 세었을때 떨어진 거리 # 각 방의 거리는 1로 동일 # 거리가 같을때는 아래층 방 선호 # 따라서 채우는 순서는 엘베로부터 떨어진 거리가 1인 H층의 1층부터 H층까지 채우고, 그 다음 떨어진 거리가 2인 H층의 1층부터 H층까지 채우는 식. # n번째 손님이 배정받아야 하는 방 번호 출력문제 # 파이썬의 표준입력은 input(), 표준출력은 print()함수를 지원한다. 만약 H, W, N이 각각 5, 4, 9라면, 손님이 채워지는 순서는 아래와 같다. elev. 5 (501호) 4 (401호) 9 (402호) 3 (301호) 8 ..