분류 전체보기
[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] =..
GET vs POST
GET vs POST GET key와 value 형태로 주소창의 URL뒤에 붙어가는 데이터 길이에 제한이 있다. 데이터가 노출되어 보안에 취약하다. 상대적으로 빠르다. 주로 데이터를 가져와서 사용자에게 보여줄 때 사용한다. 같은데이터를 보내면 항상 같은 응답이 온다. (캐시) POST 데이터를 인코딩하여 바디에 담아서 서버로 보낸다. 문자열 뿐만 아니라 다른 객체의 값도 전송 가능 길이에 제한이 없다(하지만 상식적으로 너무크면 안됨) 데이터가 숨겨져있어 보안에 유리하다. 상대적으로 느리다. 주로 데이터를 입력하거나 수정할 때 사용한다. 같은 데이터를 보내도 받는 데이터가 달라질 수 있다.
[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: 값에 의한 호출 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의 경우 함수에 값을 전달해서 그 함수안에서 해당 값을 바꾼다면? 기존의 값은 바뀌지 않는다. 우리는 값만..
[python] 백준 - 1780. 종이의 개수
🤔문제 해결 S2 | 분할정복 첫번째에 있는 코드가 더 정답인거 같다( 둘다 통과했지만 ) 첫번째 코드는 항상 9개의 조각으로 잘라서 진행한다. - 이게 문제랑 더 맞는거 같다. 하지만 두번째 코드는 (처음 풀어서 통과하고 다시보니 이상함) 9개의 조각이 아니다. 종이가 들어오면 3x3으로 다 잘라버린다. 그래도 통과한다. 이게 되네?? 내가 문제를 잘 이해하지 못한건지... 내가 짠 코드를 이해하지 못한건지 잘 모르겠다. 💻소스 코드 from itertools import chain # 2차원 리스트를 1차원리스트로 바꿔주는 친구 def bt(paper): global a, b, c nn = len(paper) if len(set(chain.from_iterable(paper))) == 1: if pa..
컴파일 언어 vs 인터프리터 언어
📔 정의 인터프리터 원시코드(사용자가 작성한 코드)를 기계어로 변환하는 과정 없이 한줄씩 해석하여 바로 실행하는 언어 대표적인 언어: python, javascript, ruby, ... 컴파일 원시코드를 기계어로 모두 변환시킨 후 변환된 코드를 실행하는 언어 대표적인 언어: C, C++ 📔 차이점 속도 보통 인터프리터 언어가 컴파일 언어보다 실행 속도가 느리다 ( 알고리즘 문제 풀 때 파이썬이 느린걸 알 수 있음) 이 기준은 런타임 기준이다. 인터프리터: 한 줄씩 해석하며 실행시키기 때문에 느림 컴파일: 모두 해석해 놓은 뒤 실행시키기 때문에 빠름 📔 예외 자바 자바는 컴파일언어이면서 인터프리터 언어라고한다 컴파일러가 원시코드를 바이트 코드로 컴파일 한다. 인터프리터가 바이트코드를 특정 OS환경에 맞게..