2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉..
9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 문제 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 수도 있다. 프로젝트 팀을 구성하기 위해, 모든 학생들은 프로젝트를 함께하고 싶은 학생을 선택해야 한다. (단, 단 한 명만 선택할 수 있다.) 혼자 하고 싶어하는 학생은 자기 자신을 선택하는 것도 가능하다. 학생들이(s1, s2, ..., sr)이라 할 때, r=1이고 s1이..
Retrofit 이란? Retrofit은 Square에서 개발한 안드로이드 및 Java용 HTTP 클라이언트 라이브러리이다. RESTful API와 통신하기 위해 사용된다. Retrofit은 OkHttp 라이브러리와 함께 작동하여 간편하게 HTTP 요청을 만들고 응답을 처리할 수 있다. Retrofit은 간단하게 인터페이스를 정의하고, 이를 기반으로 HTTP 요청 및 응답 처리를 자동으로 생성할 수 있다. Retrofit Annotation (어노테이션) Retrofit의 핵심 개념 중 하나는 어노테이션을 사용하여 인터페이스 메서드를 HTTP 요청으로 매핑하는 것이다. 예를 들어, @GET, @POST, @PUT, @DELETE와 같은 어노테이션을 사용하여 HTTP 메서드를 지정하고, @Path, @Qu..
이제부터는 우리가 지금까지 만들었던 서버와 Android간의 데이터 전달을 위한 Android 코드를 만들것이다. Android Studio의 코드를 작성하는데 생각보다 너무 많은 시간이 걸려서 이제 게시글을 작성한다. 우리가 할 것은 서버와 통신하기 위한 방법을 찾는 것이다. 서버와 통신할 수 있는 방법은 여러가지가 존재하는데 그 중 가장 많이 사용되고 가장 편리하게 사용할 수 있는 것이 바로 Retrofit이다. Retorfit에 대한 자세한 설명은 다음의 게시글을 참고하길 바란다. Retrofit Interface Retrofit을 사용하기 위해서는 Retrofit 인터페이스를 정의해야 한다. 이를 기반으로 HTTP 요청 및 응답 처리를 자동으로 생성한다. 내가 작성한 인터페이스는 다음과 같다. i..
FTP(File Transfer Protocol) 이란? FTP는 인터넷 상에서 파일을 전송하기 위한 표준 프로토콜이며, TCP/ IP를 이용해 통신한다. FTP는 클라이언트와 서버 간에 데이터를 전송하는 데에 사용되며, 주로 웹 서버와 같은 리눅스 기반의 서버에서 사용된다. 기본적으로 암호화되지 않은 텍스트 기반 프로토콜이므로, 데이터 전송 중에 보안에 취약한면이 있다. 그래서 보안성을 강화한 방식인 FTPS가 개발되었다. 일반적으로 20, 21번 포트를 사용한다. FTPS(File Transfer Protocol Secure) 이란? FTPS는 FTP의 보안 버전으로, SSL/TLS 전용 포트인 990포트나 FTP와 동일한 20, 21 포트를 사용한다. FTPS의 방식은 이전에 설명했던 HTTP에서 ..
SSH (Secure SHELL, 시큐어 셀) 란? SSH란 인터넷을 통해 다른 컴퓨터나 서버에 안전하게 원격으로 접속하고 명령을 실행하는 프로토콜이다. SSH는 암호화된 통신을 사용하기 때문에, 인터넷을 통해 전송되는 데이터가 제3자에게 노출되는 것을 방지할 수 있다. SSH 연결을 설정하려면 SSH 클라이언트를 사용하여 원격 컴퓨터에 접속하고, 원하는 작업을 수행한다. 일반적으로, SSH 클라이언트는 Unix 또는 Linux 시스템에서 기본으로 제공된다. Windows 운영체제를 사용하는 경우, PuTTY와 같은 SSH 클라이언트를 설치해야 한다. SSH는 어디에 사용하는가? 원격 서버에 로그인: SSH를 사용해 원격 서버에 로그인하면 로컬 머신에서 작업한 것과 동일한 명령을 원격 서버에서 수행할 수..
SSL(Secure Sockets Layer) 이란? SSL은 클라이언트와 서버 간의 통신을 암호화하는 보안 프로토콜이다. SSL 3.0 버전에서 보안 취약점이 발견되어, 이후 버전에서는 TLS 프로토콜이 사용된다. TLS는 SSL과 호환되며, 더욱 강력한 암호화 기능을 제공한다. 'HTTPS://' 로 사용되는 웹 사이트가 있다면 SSL을 사용하는 경우라고 볼 수있다. TLS(Transport Layer Security) TLS는 클라이언트와 서버 간의 통신을 암호화하기 위해 대칭키 암호화와 공개키 암호화를 혼합하여 사용한다. 대칭키 암호화는 데이터를 전송하는 데 사용되며, 공개키 암호화는 대칭키를 안전하게 전달하기 위해 사용된다. 또한, TLS는 디지털 인증서를 사용해 서버의 신원을 확인한다. 디지털..
HTTP(HyperText Transfer Protocol) 이란? 기본적으로 HTTP는 애플리케이션 계층에서 인터넷에서 웹 페이지를 전송하기 위해 사용되는 프로토콜이다. HTTP는 클라이언트와 서버 간에 데이터를 주고받을 수 있는 규칙을 정의하고 있다. 클라이언트는 웹 브라우저를 통해 서버에 HTTP 요청을 보내면, 서버는 이 요청에 대한 응답을 다시 클라이언트에게 전송한다. 이 과정에서 요청과 응답은 HTTP 메시지 형태로 전송된다. HTTP는 일반적으로 TCP/IP 프로토콜을 사용한다. 클라이언트가 요청을 보내면 서버는 이에 대한 응답을 전송하고 연결을 종료한다. 이러한 방식을 '요청 / 응답' 모델이라고 한다. ☞ 상태가 존재하지 않는 Stateless 프로토콜 HTTP의 요청 및 응답방식은 인터..