오랜만에 배우는 새로운 언어 1. 함수 fun functionName() { println("Hello World!"); } fun add(a:Int, b:Int) :Int { return a+b; } 자바와 다른 점은 변수/함수의 타입을 변수명/함수명 뒤에 별도로 선언해준다는 점이다. 2. 상수/변수 fun main() { val a:Int = 10; //상수(final) var b:Int = 20; //변수 } val은 상수, var은 변수를 의미한다. 추가적으로 선언과 동시에 초기화가 이루어질 경우 파이썬과 같이 dynamic type binding이 가능하기 때문에 타입을 별도로 지정하지 않아도 된다. 다만 선언과 동시에 초기화하지 않으면 별도로 타입을 지정해주어야 한다. 3. 변수 출력 val ..
타임리프는 스프링과 통합을 위한 다양한 기능을 제공한다. 타임리프 템플릿 엔진 스프링 빈 등록 스프링 부트는 build.gradle에 코드를 추가해주면 타임리프 템플릿 엔진을 스프링 빈에 등록하고, 타임리프용 뷰 리졸버를 스프링 빈으로 등록할 수 있게 해준다. (자동화 가능하다) implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 입력 폼 활용 name th:object를 적용하기 위해서는 Controller부분에서 model을 이용해서 오브젝트를 뷰로 전달해주고, 뷰에서는 form태그에 th:action과 th:object를 적용한 후 밑에서 타임리프 문법을 이용해서 전달받은 오브젝트로 사용하면 된다. 또한 th:object의..
문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니다. 입출력 예nvertexr..
안드 - Kotlin, Android studio 서버 - Spring, Java DB - mysql 관리 - 도커, 쿠버네티스 디자인 - figma 안드-서버연결 - swagger 버전관리 - github 소통&협업 - discord, slack 실무/플젝경험이 많이없다보니 이게 무슨소리인지 모르겠어서 정리해보기로 했다 참고링크) 서버: [AWS] Spring, Nginx, Docker로 무중단 배포하기 - 2탄 :: Gyun's 개발일지 (tistory.com) 1. 도커, 쿠버네티스 - 컨테이너: 앱이 구동되는 환경을 격리하는 기술 - 컨테이너 런타임: 컨테이너를 다루는 도구 (ex-도커. 컨테이너의 공유, 다운, 구동 etc) - 쿠버네티스: 도커를 이용해서 컨테이너들의 환경설정하는것 역사 (1)..
문제 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록), B(파랑) 중 하나를 색칠한 그림이 있다. 그림은 몇 개의 구역으로 나뉘어져 있는데, 구역은 같은 색으로 이루어져 있다. 또, 같은 색상이 상하좌우로 인접해 있는 경우에 두 글자는 같은 구역에 속한다. (색상의 차이를 거의 느끼지 못하는 경우도 같은 색상이라 한다) 예를 들어, 그림이 아래와 같은 경우에 RRRBB GGBBB BBBRR BBRRR RRRRR 적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4개이다. (빨강 2, 파랑 1, 초록 1) 하지만, 적록색약인 사람은 구역을 3개 볼 수 있다...
유클리드 호제법? 두 양의 정수, 혹은 두 다항식의 최대공약수(gcd)를 구하는 방법을 말한다. gcd, lcm관련 문제를 풀 때 거의 필수적으로 사용된다고 느껴질 정도로 많이 사용되는 것 같다. 두 양의 정수 a,b(a>b)에 대하여 a = bq+r (0
문제 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다. 먼저 근처에 보이는 숫자 N개를 종이에 적는다. 그 다음, 종이에 적은 수를 M으로 나누었을 때, 나머지가 모두 같게 되는 M을 모두 찾으려고 한다. M은 1보다 커야 한다. N개의 수가 주어졌을 때, 가능한 M을 모두 찾는 프로그램을 작성하시오. 입력 첫째 줄에 종이에 적은 수의 개수 N이 주어진다. (2 ≤ N ≤ 100) 다음 줄부터 N개 줄에는 종이에 적은 수가 하나씩 주어진다. 이 수는 모두 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. ..
리눅스에는 '프로그램'과 그 프로그램이 실행되는 환경인 '프로세스'라는 개념이 있다. 제목으로 써놓은 함수들이 바로 해당 프로세스를 제어하는 함수들이다. 1. fork() #include pid_t fork(void); fork()는 기존 프로세스가 새 프로세스를 생성할 때 사용하는 시스템 호출 함수이다. fork()함수를 사용하여 생성한 프로세스를 자식 프로세스라고 하며, 함수가 호출된 기존 프로세스를 부모 프로세스라고 한다. fork()함수는 한번 호출되나, 호출한 프로세스에 따라 다른 값을 리턴한다. 부모 프로세스에는 새로 생성된 자식 프로세스의 ID를 리턴하고, 자식 프로세스에는 0을 리턴한다. 프로세스 생성에 실패한 경우는 -1을 리턴하고 errno값을 갱신한다. 부모 프로세스는 자식 프로세스의..
개요 OS에서 프로세스가 프로그램을 실행시키기 위해서, 메모리에 접근 (load, save)하는데, OS는 프로그램에 크게 코드, 데이터, 힙, 스택의 4부분으로 분할하여 접근토록 한다. 1. Code(Text) area프로세스가 실행할 코드와 매크로 상수 등의 기계어의 형태로 저장된 공간이다. CPU는 코드영역에 저장된 명령을 가져가서 처리한다. 이 영역은 컴파일 타임에 결정되고 런타임에 수정이 이루어지지 않는다. 2. Data area전역변수 혹은 정적변수 등의 변수들이 저장된 공간이다. 전역변수나 정적변수는 프로그램의 시작과 함께 할당되며, 프로그램 종료시 소멸한다. 3. Heap area힙 영역은 프로그래머가 직접 공간을 할당/해제하는 공간이다. 힙 영역은 메모리의 낮은 주소부터 높은 주소까지..
5. getc(3), fgetc(3), getchar(3) + ungetc(3) #include int getc(FILE* fp); int fgetc(FILE* fp); int getchar(); int ungetc(int c, FILE* fp); @param fp: 파일 스트림형 포인터 @return: 성공시 다음 문자를 int로 변환하여 리턴, 파일 끝이나 에러시 EOF 리턴 한 번에 하나의 문자를 읽는 라이브러리 함수. getc()와 fgetc()는 주어진 스트림형 포인터에서 한 문자씩 읽고 int로 변환한 다음 리턴하고 매크로와 함수로 구현되었다는 차이가 있다. getchar()는 stdin으로부터 문자 하나를 입력받는다. #include #include int main() { int charac..
0. TLS, SSL TCP/IP 네트워크 통신에서 보안을 제공하기 위한 암호 규약을 의미한다. (TLS가 SSL의 후속 버전이며, 둘 다 암호화된 통신을 제공하기 위한 프로토콜이라는 점에서 혼용되어 사용되기도 한다.) HTTP 2.x 이상의 버전들은 HTTPS 사용을 강하게 권장하고 있다고 알고 있는데, HTTPS 사용을 위해서는 응용 계층과 전송 계층 사이에서 TLS/SSL이라는 독자적인 프로토콜을 이용한다. (반드시 TLS/SSL을 사용해야 하는것은 아니고, HTTPS를 위한 보안 프로토콜로 보편적으로 많이 사용하는 프토로콜이 TLS/SSL이다) 1. Symmetric Cryptography (대칭 암호화) sender와 receiver가 secure한 통신을 하기 위해서, 모든 네트워크 사용자..
#include #include #include #include #include #define BUFFER_SIZE 1024 #define WORD_MAX 100 int main() { int fd; int length=0, offset=0, count=0; char* fname = "ssu_test.txt"; char buf[WORD_MAX][BUFFER_SIZE]; int i; if((fd=open(fname, O_RDONLY))