본문 바로가기

Programming207

[프로그래머스] 나머지가 1이 되는 수 찾기(Python) https://programmers.co.kr/learn/courses/30/lessons/87389 코딩테스트 연습 - 나머지가 1이 되는 수 찾기 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 입 programmers.co.kr def solution(n): for i in range(1,n): if n%i==1: return i 주어진 조건대로 그대로 구현하면 되는 문제다. 2021. 10. 21.
[프로그래머스] 여행 경로(Python) https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 처음 문제를 풀 때는 알파벳 정렬만 따져서 풀어서 일부 문제가 안 풀렸다. 내가 틀리는 유형의 테스트 케이스는 하단과 같다. tickets = [["ICN", "AOO"], ["AOO", "BOO"], ["AOO", "COO"], ["COO", "AOO"], ["BOO", "ZOO"]] answer.. 2021. 10. 21.
[프로그래머스] 단어 변환(Python) https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 나의 풀이 from collections import deque def check_one_word(word,begin): counting = 0 for w,b in zip(word,begin): if w != b: counting +=1 return True if counting ==1 else False def sol.. 2021. 10. 21.
[프로그래머스] 네트워크(Python) https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 참고 https://hkim-data.tistory.com/31?category=1016184 #2-3 Python 코딩테스트 그리디 알고리즘 , DFS & BFS https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=2 https://www.yout.. 2021. 10. 21.
[프로그래머스] 타겟 넘버 (Python) https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 참고 https://hkim-data.tistory.com/31?category=1016184 #2-3 Python 코딩테스트 그리디 알고리즘 , DFS & BFS https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0d.. 2021. 10. 21.
#5 Python 코딩테스트 이진 탐색 https://www.youtube.com/watch?v=94RC-DsGMLo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=5 이 포스팅은 위의 영상을 보고 제가 필요하다고 생각되는 부분을 정리한 포스팅입니다. 순차 탐색 : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색 : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 - 이진 탐색은 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정합니다. 절반씩 데이터를 쪼개서 탐색하기 때문에 O(logN)의 시간 복잡도를 가지게 됨 # 이진 탐색 소스코드 구현 (재귀 함수) def binary_search_recursive(array, target.. 2021. 10. 20.
#4 Python 코딩테스트 정렬 알고리즘 https://www.youtube.com/watch?v=KGyK-pNvWos&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=4 이 포스팅은 위의 영상을 보고 제가 필요하다고 생각된 부분을 정리한 포스팅입니다. 정렬 알고리즘 - 데이터를 특정한 기준에 따라 순서대로 나열하는 것. 1. 선택 정렬 처리되지 않은 데이터 중 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i for j in range(i + 1, len(array)): if array[min_index] > array[j]: min_index = .. 2021. 10. 20.
#2-3 Python 코딩테스트 그리디 알고리즘 , DFS & BFS https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=2 https://www.youtube.com/watch?v=7C9RgOcvkvo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3 이 포스트는 위의 영상을 보고 제가 필요하다고 생각된 부분을 정리한 포스팅입니다. 그리디 알고리즘 : 현재 상태에서 지금 당장 좋은 것만 고르는 방법-> 이 방법을 이용했을 때 최적의 해를 구할 수 있는지 검토하는 것이 필요함. 스택 , 큐 : - 스택은 선입 후출 형태 list를 그대로 사용한다. append, pop을 활용. - 큐는 선입선출 형태 from collections.. 2021. 10. 20.
Python 입력 값 다양하게 받기 (input, map, split) Python에서는 input() 메서드를 통해 입력값을 다양하게 받을 수 있다. (보통 실행 창에서 직접 입력함) 하나씩 알아보자. 1. 문자열 입력 단순하게 input 만을 사용하면 문자열을 입력받게 된다. a = input() type(a) print(a) 2. 숫자 입력받기 python 내장 함수인 int()를 활용해서 input 값을 형 변환시켜줘서 숫자를 입력받을 수 있다. a = int(input()) print(type(a)) print(a) 3. split 활용 쪼개서 입력받기 python에는 split 이라는 함수를 제공한다. 간단하게 알아보면 문자열.split(분류조건, 나눌횟수)를 통해 리스트로 return 한다. split의 파라미터를 기본으로 하면 공백(띄어쓰기 탭 등등)을 기반으.. 2021. 10. 19.
#1 Python 코딩테스트 대비 여러 Tip 정리 https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=2 이 포스트는 위의 영상을 보고 제가 필요하다고 생각된 부분을 정리한 포스팅 입니다. - 실수형 데이터의 경우, 컴퓨터 특성상 4바이트나 8바이트로 실수를 표현하기 때문에 근사치를 표현하여 정확하게 떨어지지 않는 경우가 많다. - 따라서 round() 함수를 사용해서 소수점 반올림을 하는 방법이 권장된다. a = 123.456 print(round(a, 2)) # 123.46 리스트를 초기화 할 때 리스트 컴프리헨션을 활용해서 초기화 하면 편함 # 1차원 리스트 array = [0]*3 # [0,0,0] # 2차원 리스트 N * M N, M =.. 2021. 10. 7.
[프로그래머스] 약수의 개수와 덧셈 (Python) https://programmers.co.kr/learn/courses/30/lessons/77884# 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr import math def solution(left, right): return sum([-num if int(math.sqrt(num)) == math.sqrt(num) else num for num in range(left,right+1)]) - 제곱수만 약수의 개수가 홀수임을 이용하면 된다. ex) 1.. 2021. 9. 29.
[프로그래머스] 위클리 챌린지 8주차 - 최소직사각형 (Python) https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 8주차 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr def solution(sizes): return max(max(x) for x in sizes) * max(min(x) for x in sizes) 최대 중 가장 큰 것 , 최소 중 가장 큰 것 2021. 9. 28.
[프로그래머스] 폰캣몬 (Python) https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr def solution(nums): return min(len(nums)//2, len(set(nums))) 2021. 9. 28.
Python 순열, 조합 (permutations, combinations, product) 파이썬 기본 라이브러리 itertools를 활용해서 여러 조합을 구할 수 있다. num_list = [1,2,3,4] # 순서 상관 있을 경우 from itertools import permutations list(permutations(num_list,2)) list(permutations(num_list,3)) # [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] # [(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1).. 2021. 9. 27.
[프로그래머스] 소수 만들기(Python) https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr from itertools import combinations import math def is_prime_number(x): for i in range(2, int(math.sqrt(x)) + 1): if x % i == 0: return False return True def solution(nums): prime_candidate = l.. 2021. 9. 27.