Python

    [python] 백준 - 2110.  공유기 설치

    [python] 백준 - 2110. 공유기 설치

    🤔문제 해결 S2 | 이분탐색 특정 범위 안에서 개수를 정한다? => 이분 탐색 공유기를 설치할 수 있는 최소간격과 최대간격의 중간값부터 시작 중간값(공유기 설치 간격)으로 공유기를 설치 했을 때 설치한 공유기가 부족하면 설치 간격을 좁혀서 더 많이 설치하자 설치한 공유기가 많거나 같으면 설치한 간격을 늘려서 덜 설치하거나 최대로 간격을 늘려보자 💻소스 코드 import sys N, C = map(int, input().split()) house = [int(sys.stdin.readline()) for _ in range(N)] # 정렬 house.sort() # 와이파이 간격을 얼마나 해야할지 모르니 최대거리와 최소거리의 중간부터 시작 left = 1 right = house[-1] - house[0..

    [python] 백준 - 1735. 분수 합

    [python] 백준 - 1735. 분수 합

    🤔문제 해결 S2 | 수학 분수를 더해준다. ( 이 정도는 다 알고있을 것이다. ) 분자와 분모의 최대공약수(GCD)를 구한다. ( math 함수에 있는 기능 ) 분자와 분모를 GCD로 나누어준다. 💻소스 코드 import math a1, b1 = map(int, input().split()) a2, b2 = map(int, input().split()) bunjja = a1 * b2 + a2 * b1 bunmo = b1 * b2 my = math.gcd(bunjja, bunmo) bunjja //= my bunmo //= my print(bunjja, bunmo) 📕문제 확인 출처: BACKJOON ONLINE JUDGE 링크: https://www.acmicpc.net/problem/1735 1735..

    [python] 백준 - 1965. 상자 넣기

    [python] 백준 - 1965. 상자 넣기

    🤔문제 해결 S2 | DP [python] 백준 - 11055. 가장 큰 증가 부분 수열 🤔문제 해결 S2 | 다이나믹프로그래밍 역시 이런 문제는 DP문제이다. dp 리스트를 만든다.(1차원, 인풋값으로 받은 수열과 똑같은 값으로 만든다.) 수열에서 자신보다 앞 쪽에 있는 값 중에서 자신 deok2kim.tistory.com 위의 문제와 살짝 비슷한 느낌이다. 값이 1로 셋팅된 길이가 n 인 dp 리스트를 만든다. dp = [1, 1, 1, ... ] 각각의 값은 현재 포함한 상자의 갯수이다. 맨앞의 상자부터 하나씩 뒤로가며 앞의 상자를 몇개나 담을 수 있는 지 체크한다. 만약 내앞의 상자가 나보다 작고 그 상자가 담고 있는 상자의 갯수(본인포함)가 5개라면 지금 나의 상자는 앞의 상자까지 담을 수 있으..

    [python] 백준 - 2504. 괄호의 값

    [python] 백준 - 2504. 괄호의 값

    🤔문제 해결 S2 | 스택, 자료구조, 구현, 재귀 괄호문제는 항상 스택으로 풀었다. 먼저 올바른 괄호인지 체크하자! 그 다음 스택을 이용해 괄호 짝을 맞추면서 ()일 때 2, []일 때 3을 계산해준다. 만약 스택의 마지막에 숫자가 있다면 곱해준다. 만약 스택에 숫자가 연속으로 나열되면 더해준다. 💻소스 코드 def is_right(s): stack = [] for ss in s: if ss == '(': stack.append(ss) elif ss == ')': if stack and stack[-1] == '(': stack.pop() else: return False elif ss == '[': stack.append(ss) elif ss == ']': if stack and stack[-1] =..

    [python] 백준 - 1890. 점프

    [python] 백준 - 1890. 점프

    🤔문제 해결 S2 | DP DFS로 해봤지만 역시나 시간초과!! 시간복잡도가 O(N^2) 인 DP로 풀어봤다. dp에는 현재 위치까지 올 수 있는 경우의 수를 담아서 해결함. 💻소스 코드 N = int(input()) field = [list(map(int, input().split())) for _ in range(N)] answer = 0 dp = [[0] * N for _ in range(N)] # i,j까지 올 수 있는 경우의 수를 저장 dp[0][0] = 1 for i in range(N): for j in range(N): if i == N - 1 and j == N - 1: # 끝에 도달했을 때 print(dp[i][j]) break cur_cnt = field[i][j] # 오른쪽으로 가기..

    call by value vs call by reference

    call by value vs call by reference

    📔 call by value vs call by reference 정의 call by value: 값에 의한 호출 call by reference: 참조에 의한 호출 📔 call by value vs call by reference 차이 객체에는 값과 주소가 있다. 우리는 실제로 값만 보고 있지만 주소도 확인할 수 있다. c = 20 print(f'값: {c}') # 값: 20 print(f'주소: {id(c)}') # 주소: 140734032078064 어떤 함수에 argument를 전달 할 때 call by value 와 call by reference를 선택할 수 있다. call by value의 경우 함수에 값을 전달해서 그 함수안에서 해당 값을 바꾼다면? 기존의 값은 바뀌지 않는다. 우리는 값만..