분류 전체보기(366)
-
[Groovy] 기본 문법
Groovy란? Java에 python이나 ruby 등의 특징을 더한 동적 객체 프로그래밍 언어이다. Gradle에서 build.gradle에서 사용되는 언어가 기본적으로 Groovy이기 때문에 기본 문법을 알면 좋다. 변수 동적 타입 바인딩 def a = 20 // 값을 할당할 때 a 변수의 타입이 결정됨 a = "문자열" // 다른 값 할당 시 변수 타입이 변함 b = "문자열" // 변수 선언 시 def 생략 가능 정적 타입 바인딩 int a = 20 // 변수 a는 int로 자료형이 고정됨 a = "문자열" // 다른 타입을 할당하면 오류 발생 문자열과 자동 형변환 String a = "문자열" // 변수 a는 String으로 자료형 고정 a = 20 // 정수 20이 문자열 "20"으로 자동 형..
2023.04.10 -
[k8s] 기본 개념
컨테이너 인프라 환경 리눅스 OS 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경을 말한다. 여기서 컨테이너는 하나 이상의 목적을 위해 독립적으로 작동하는 프로세스이다. 컨테이너 인프라 환경을 구성하면 눈송이 서버를 방지하는 데 효과적이다. 💡 눈송이 서버란 여러 사람이 만져서 설정의 일관성이 떨어진 서버를 말한다. 가상화 환경에서는 각각의 가상 머신이 모두 독립적인 OS 커널을 가지고 있기 때문에 그만큼 자원을 더 소모해야 하고 성능이 낮아질 수밖에 없다. 하지만 컨테이너 환경은 OS 커널 하나에 컨테이너 여러 개가 격리된 형태로 실행되기 때문에 자원을 효율적으로 사용할 수 있고 거치는 단계가 적어 속도도 훨씬 빠르다. 컨테이너 인프라 환경에서 쿠버네티스가 사실상 표준으로 자리하..
2023.04.10 -
[Compiler] 3-3. 문법 표기법
대표적인 문법 표현 방법은 정규 표현, 구문 도표, BNF, EBNF가 있다. 1. 정규 표현 정규 표현(regular expression)은 정규 언어를 가장 잘 표현할 수 있는 방법이다. 정규 표현은 다음과 같이 재귀적으로 정의된다. 기본 단계 : 기본을 정의하는 세 가지 규칙이 있다. \(\varnothing\)는 공집합을 나타내는 정규 표현이다. \(\varepsilon \)은 공문자열을 나타내는 정규 표현이다. 터미널 기호인 a는 집합 {a}를 나타내는 정규 표현이다. 귀납 단계 : r과 s가 정규 언어 L(r)과 L(s)를 나타내는 정규 표현이라면 (r) + (s)는 L(r) \(\cup\) L(s)를 나타내는 정규 표현이다. (r) \(\cdot\) (s)는 L(r) \(\cdot\) L(s..
2023.04.10 -
[Compiler] 3-2. 형식 문법
형식 문법은 크게 두 가지 방법으로 정의할 수 있다. 생성 규칙(Production Rule)만으로 표현 항목으로 정의 1. 형식 문법 형식 문법 \(G=(V_N,V_T,P,S)\) 는 다음과 같이 네 가지 항목으로 정의된다. \(V_N\): 논터미널 기호의 유한집합 \(V_T\): 터미널 기호의 유한집합 \(V_N\cap V_T=\varnothing ,V_N\cup V_T=V\) 터미널 기호와 논터미널 기호를 문법 기호(grammer symbol)라 하며 보통 \(V^{vocabulary}\)로 표시한다. \(P\): 생성 규칙의 유한집합 \(\alpha \to \beta, \alpha \in V^+, \beta \in V^*\) \(\alpha\)를 왼쪽 부분(left-hand side), \(\be..
2023.04.10 -
[Baekjoon] 14503번: 로봇 청소기
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 문제 설명 주어진 조건대로 동작하는 시뮬레이션 문제이다. 문제를 잘 읽고 알고리즘을 구현해야 한다. 특별히 부연설명할 게 없어서 설명은 사이트를 참고하면 좋겠다. 풀이 방법 주어진 조건대로 구현하면 되는 심플한 문제이다. 대신 조건이 많아서 꼼꼼히 예외처리를 해줘야 한다. 필자는 큐를 활용해서 해결했다. BFS를 약간 변형했다. 코드를 읽어내려가면..
2023.04.10 -
[Baekjoon] 15961번: 회전 초밥
https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net 문제 설명 문제가 길기 때문에 천천히 꼼꼼히 읽어보면서 문제와 조건을 이해해야 한다. 예제 입력 1을 통해 알아보자. 초밥이 위처럼 주어진다고 한다. 이 중에 어떤 한 접시부터 연속으로 k개의 접시를 먹으면 할인을 해주는 이벤트를 한다고 한다. 그리고 이 이벤트에 참여하면 서비스 초밥을 하나 더 준다고 한다. 이 초밥이 트레이에 없으면 하나 만들어서 준..
2023.04.07