-
[프로그래머스] 소수 찾기 python(level 2)알고리즘 문제/풀어본 것 2022. 10. 30. 19:06
https://school.programmers.co.kr/learn/courses/30/lessons/42839 1트 소수 판별시 완전 제곱 수로 인한 범위 체크를 잘 하자. +1해줘야함. 문자열.join()의 인자로 iterable 객체를 주면 된다. from itertools import permutations, combinations combinations(iterable 객체, k개) permutations(iterable 객체, k개) from math import comb, perm comb(n, k) # nCk perm(n, k) # nPk 내 풀이 # 한자리 숫자가 적힌 종이 조각이 흩어져 있다. # 흩어진 종이 조각을 붙여 소수를 몇개 만들 수 있는지 알아보자. # 각 종이 조각에 적힌..
-
[프로그래머스] 숫자 게임 python (level 3)알고리즘 문제/풀어본 것 2022. 10. 30. 17:40
https://school.programmers.co.kr/learn/courses/30/lessons/12987 1트 투 포인터지만 꼭 투포인터 형식으로 구현할 필요는 없다. 너무 형식에 얽매이지는 말자. 코드가 좀 길어진다. 내 풀이 # 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자게임 # A팀 B팀 # 1. 먼저 모든 사원이 무작위로 자연수를 하나씩 받음 # 2. 각 사원은 딱 한 번씩 경기를 함 # 3. 각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수를 공개 # 그때 숫자가 큰 쪽이 승리 -> 승리한 팀이 승점 1점 얻음 # 숫자가 같다면 누구도 승점을 얻지 못한다. # 1 = B[b_idx]: # b_idx += 1 # elif A[a_idx] < B[b_idx]: # a_..
-
[프로그래머스] 단어 변환 python(level 3)알고리즘 문제/다시 풀어볼 것 2022. 10. 30. 17:22
https://school.programmers.co.kr/learn/courses/30/lessons/43163 1트 bfs와 dfs로 모두 풀 수 있다. 문자열을 비교할 때는 zip을 이용하면 좋은 것 같다. generetor를 이용하는 방법이 참신해서 참고했다. bfs는 항상 방문하기전에 방문표시하는 것을 잊지말자. 설계를 하자. 자꾸 먼저 코딩부터한다. 내 풀이 # 두 개의 단어 begin, target과 단어의 집합 words가 있다. # begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾는다. # 1. 한 번에 한 개의 알파벳만 바꿀 수 있다. # 2. words에 있는 단어로만 변환할 수 있다. # 예를 들어 begin이 "hit", target가 "cog" # words가 [..
-
[프로그래머스] 짝지어 제거하기 python (level 2)알고리즘 문제/풀어본 것 2022. 10. 30. 16:43
https://school.programmers.co.kr/learn/courses/30/lessons/12973?language=python3 1트 문제 풀기전 설계부터하는 것은 좋았다. 그런데 그대로 코딩을 안했다... 주의하자 풀고 틀린 경우 확인할 것 설계대로 구현했는가? 1이 맞다면 설계가 잘못된 곳이 있는지 확인(코너케이스 확인) 내 풀이 # 알파벳 소문자로 이루어진 문자열을 가지고 시작 # 1. 문자열에서 같은 알파벳이 2개 붙어있는 짝 찾기 # 2. 그 둘을 제거 # 3. 앞뒤로 이어 붙임 # 4. 이 과정을 반복 # 짝지어 제거하기를 성공적으로 수행할 수 있다면 1을 리턴 아니면 0을 리턴 # 1. 글자 확인 # 2. stack 이 비어있으면 1로 돌아감 아니면 stack의 맨 처음것과 ..
-
[프로그래머스] 다음 큰 숫자 python(level 2)알고리즘 문제/풀어본 것 2022. 10. 30. 15:09
https://school.programmers.co.kr/learn/courses/30/lessons/12911?language=python3 1트 count함수를 통해 iterable한 객체에서 어떤 값이 몇개 들어있는지 확인할 수 있다. bin(int형 숫자): int형 숫자가 2진수로 어떤 수인지 str형태로 리턴해준다. 0b~ oct(int형 숫자): int형 숫자가 8진수로 어떤 수인지 str형태로 리턴해준다. 0o~ hex(int형 숫자): int형 숫자가 16진수로 어떤 수인지 str형태로 리턴해준다. 0x~ 내 풀이 def solution(n): answer = n count_one = bin(n)[2:].count("1") while True: answer += 1 candidate =..
-
[프로그래머스] 피보나치 수 python(level 2)알고리즘 문제/풀어본 것 2022. 10. 30. 15:02
https://school.programmers.co.kr/learn/courses/30/lessons/12945?language=python3 1트 메모이제이션, dynamic programming 이전에 했던 작업을 또 하는 경우 시간초과가 날 수 있다. 공간복잡도를 생각해서 저장해놓도록하자. 내 풀이 # 피보나치 수 구현 # 2이상의 n이 입력 # n번째 피보나치 수를 1234567로 나눈 나머지를 리턴 import sys FIBONACCI = dict() FIBONACCI[0] = 0 FIBONACCI[1] = 1 FIBONACCI[2] = 1 FIBONACCI[3] = 2 def get_fibonacci(n): if n in FIBONACCI.keys(): return FIBONACCI[n] e..
-
[프로그래머스] 숫자의 표현 python(level 2)알고리즘 문제/풀어본 것 2022. 10. 30. 14:20
https://school.programmers.co.kr/learn/courses/30/lessons/12924?language=python3 1트 투포인터로 풀었다. 수학공식으로 푸는 것도 있지만, 그것은 문제의 의도와는 다르다고 생각해서 넘어갔다. 사실 잘 이해가 안간다. 나중에 공부해보자... 내 풀이 # 자연수 n을 연속한 자연수들로 표현하는 방법이 여러개 # n이 주어졌을 때 연속된 자연수들로 n을 표현하는 방법의 수를 return # n은 10_000이하의 자연수 def solution(n): answer = 0 left = 1 right = 1 sum_result = 1 while True: while sum_result < n: right += 1 sum_result += right if..