전체 글 123

백준 11729 하노이 탑 이동순서 - python

출처 : https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 풀이 def hanoi(n,start,end) : if n == 1 : print(start, end) return hanoi(n-1, start, 6-start-end) print(start, end) hanoi(n-1, 6-start-end, end) n = int(input()) print(2**n - 1) hanoi(n,1,3) 1단계 / 2단계/ 3단계 나눠서 생각을..

코딩테스트 2022.01.15

[프로그래머스] 실패율 - python

출처 : https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 문제가 길어서 간략하게 캡쳐했다. def solution(N, stages): people = len(stages) fail_ratio = {} for i in range(1, N+1): if people != 0 : fail_ratio[i] = stages.count(i) / people people -= stages.count(i) else : fa..

코딩테스트 2022.01.14

[프로그래머스] 같은 숫자는 싫어

출처 : https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 풀이: def solution(arr): ans = [arr[0]] for i in range(1,len(arr)): if arr[i-1] != arr[i]: pass ans.append(arr[i]) return ans 주어진 리스트에서 중복된 부분은 제거하고 다른 숫자일 경우 출력을 하는 문제다. 간단하게 처음 리스트 값을..

코딩테스트 2022.01.13

[프로그래머스] 제일 작은 수 제거하기 - python

출처: https://programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr 풀이 : def solution(arr): answer = [] a = arr.index(min(arr)) arr.pop(a) if len(arr) == 0: answer = [-1] else: answer = arr return answer 간단하게 리스트 중 최솟값을 찾아서 제거하는 문제다. 다음과 같이..

코딩테스트 2022.01.13

[프로그래머스] 로또의 최고 순위와 최저 순위

출처 : https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 문제가 너무 길어 문제는 생략하겠다. 풀이 def solution(lottos, win_nums): rank = [6,6,5,4,3,2,1] ans = lottos.count(0) cnt = 0 for i in win_nums: if i in lottos: cnt += 1 return rank[cnt+ans..

코딩테스트 2022.01.13

[프로그래머스][lv3] 최고의 집합 - python

출처 https://programmers.co.kr/learn/courses/30/lessons/12938?language=python3# 코딩테스트 연습 - 최고의 집합 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만 programmers.co.kr 풀이 def solution(n, s): answer = [] a = s//n if a < 1 : answer = [-1] else : for i in range(n): answer.append(a) b = s % n for j in range(b): answer[j] += 1 answer.sort(..

코딩테스트 2022.01.13

[pytorch] MNIST 예제

기존 텐서플로로 공부를 해왔다. 그런데 최근 트렌드가 텐서플로에서 파이토치로 많이 넘어간다고 한다. 파이썬과 많이 비슷하며 연구진들이 정말 많이 사용해 논문 같은 예시 코드가 파이토치로 많이 구현되있어서 이왕 제대로 각잡고 공부하는거 토치를 한 번 공부해 보려고 한다. 실제로 간단한 기본 MNIST를 하면서 느낀점은 ... 더 어렵다. 확실히 더 어렵다... 아직 잘 몰라서 이런 말 하기도 조심스럽지만 텐서플로 같은 경우에는 모델을 돌릴 때 아주 간단하게 돌릴 수 있었다. 하지만 디테일하게 들어가서 구조를 들여다 보고 모델이 돌아가는 방식을 살피기는 쉽지 않았다. 그냥 필요한 값만 넣어주면 알아서 돌아가는 시스템이였다. 근데 파이토치는 모델의 구조 순서에 따라 직접 구성하는 방식이고 원리를 잘 이해한 상..

pytorch 2022.01.12

백준 터렛 1002 - python

출처 : https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 풀이: T = int(input()) for _ in range(T): x1,y1,r1,x2,y2,r2 = map(int,input().split()) d = ((x2 - x1) ** 2 + (y2 - y1) ** 2) **(1/2) if d == 0 and r1 == r2 : print(-1) elif abs(r1-r2)