전체 글 86

[백준]9012번: 괄호- 파이썬

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은..

Algorithm 2022.06.14

[백준] 2839번: 설탕 배달- 파이썬

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1..

Algorithm 2022.06.14

[백준] 7785번: 회사에 있는 사람- 파이썬 (리스트 vs 딕셔너리)

https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 문제 상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다. 각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다. 상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔..

Algorithm 2022.05.24

[백준] 1010번: 다리놓기- 파이썬

https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 문제 재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 ..

Algorithm 2022.05.17

[백준] 1934번: 최소공배수- 파이썬

https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T..

Algorithm 2022.05.17

[알고리즘] 정렬 알고리즘 (Sorting Algorithm) (버블정렬, 선택정렬, 삽입정렬)

정렬 알고리즘 n개의 원소를 기준에 맞게 열거하는 알고리즘 구현이 간단한 경우는 시간복잡도가 비효율적 시간 복잡도가 효율적인 경우는 구현이 복잡함 1. 버블/거품 정렬 (Bubble Sort) 서로 인접한 두 원소의 대소를 비교 및 교환 구현이 쉽고 간단하지만 효율이 좋지 않다. 시간 복잡도 평균 시간 복잡도는 $O(n^2)$ 비교 한번의 순회를 마칠 때 마다 비교 대상이 하나씩 줄어든다. 전체 원소의 개수가 n이라고 하면 n-1번 순회를 하면 정렬이 끝난다. 위 그림에서는 원소의 개수가 5개이므로 4+3+2=10번의 비교를 하게 된다. 일반화 수식은 아래와 같다. $$(n-1)+(n-2)+...+2+1 = {n*(n-1)\over2}$$ 자리 교환 최선의 경우: 자리 교환이 한번도 이루어 지지 않기 때..

Algorithm/이론 2022.05.12

[부캠AI] AI Math - 경사하강법- 순한맛

AI Math 2강: 경사하강법- 순한맛 미분의 개념과 gradient vector, 경사하강법의 알고리즘 📌미분이란? 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구 # sympy.diff을 사용하면 컴퓨터로 미분을 계산할 수 있다. import sympy as sym from sympy.abc import x sym.diff(sym.poly(x**2 + 2*x + 3), x) 미분으로 함수 f의 주어진 점 (x,f(x))에서의 접선의 기울기를 구할 수 있다. 기울기를 알면 어느 방향으로 움직여야 함수값이 증가하는지, 감소하는지 알 수 있다. 경사상승법 (gradient ascent) 미분값을 더하여 함수의 극대값의 위치를 구할 수 있다. 경사하강법(gradient descent) 미분값을 빼..

Machine Learning 2022.05.12

[부캠AI] AI Math - 행렬이 뭐예요?

AI Math 2강: 행렬이 뭐예요? 행렬의 개념과 연산, 벡터공간에서 가지는 의미, 연립방정식 풀기와 선형회귀분석에 응용 방법 📌 행렬이란? 벡터를 원소로 가지는 2차원 배열 특징 행(row)과 열(column)이라는 인덱스(index)를 가진다. 행렬은 대문자 X, 벡터는 소문자 x로 표현한다. 벡터가 공간에서 한 점을 의미한다면 행렬은 여러 점들을 나타낸다. 행렬의 $x_{ij}$는 $i$번째 데이터의 $j$번째 변수의 값을 말한다. 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있다. 성분곱과 스칼라곱도 벡터와 차이가 없다. 행렬의 곱셈(matrix multiplication) $i$번째 행벡터와 $j$번째 열벡터 사이의 내적을 성분으로 가지는 행렬 계산 $X$의 열의 개수와 $Y$의 행의..

Machine Learning 2022.05.12

[백준] 16940번: BFS 스페셜 저지- 파이썬

https://www.acmicpc.net/problem/16940 16940번: BFS 스페셜 저지 올바른 순서는 1, 2, 3, 4와 1, 3, 2, 4가 있다. www.acmicpc.net 문제 BOJ에서 정답이 여러가지인 경우에는 스페셜 저지를 사용한다. 스페셜 저지는 유저가 출력한 답을 검증하는 코드를 통해서 정답 유무를 결정하는 방식이다. 오늘은 스페셜 저지 코드를 하나 만들어보려고 한다. 정점의 개수가 N이고, 정점에 1부터 N까지 번호가 매겨져있는 양방향 그래프가 있을 때, BFS 알고리즘은 다음과 같은 형태로 이루어져 있다. 큐에 시작 정점을 넣는다. 이 문제에서 시작 정점은 1이다. 1을 방문했다고 처리한다. 큐가 비어 있지 않은 동안 다음을 반복한다. 큐에 들어있는 첫 정점을 큐에서 ..

Algorithm 2022.04.30

[백준] 5557번: 1학년- 파이썬

https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 문제 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀고 있다. 예를 들어, "8 3 2 4 8 7 2 4 0 8 8"에서 등식 "8+3-2-4+8-7-2-4-0+8=8"을 만들 수 있다. 상근이는 올바른 등식을 만들려고 한다. 상근이는..

Algorithm 2022.04.05
728x90