전체 글 477

백준 C++ | #10 BOJ10773 제로 C++ 문제 풀이

10773번: 제로 (acmicpc.net) 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 처음으로 풀어본 STL 문제였다. 문제를 풀면서 어떻게 공백('\n')을 받아 루프를 멈출지를 엄청 고민했는데, c++ - 빈 줄까지 파일 읽기 - 스택 오버플로 (stackoverflow.com) C++ string을 int로 변경하는 방법 (tistory.com) 알고보니 첫 입력으로 입력의 개수가 주어져 for문으로 구현하면 되었다. #include #include #include..

백준 C++ | #9 BOJ4344 평균은 넘겠지 C++ 문제 풀이

4344번: 평균은 넘겠지 (acmicpc.net) 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net "대학생 새내기 90%는 자신이 반에서 평균은 넘는다고 생각한다."로 시작하는 슬픈 문제 테스트케이스 사이즈에 맞게 배열을 생성해서 학생들의 점수를 입력받고, 평균을 넘는 케이스의 비율을 계산해주면 된다. 제출했을 때 컴파일에러가 발생했는데, 이건 int로 계산해주어야 하는 배열의 크기 변수를 double로 정의해서 생긴 문제였다. double* a = new double[array_size] 이 부분에서 array_size 변수가 double이라 컴파일 에러가 난 것. 참고. 프로그래밍..

백준 C++ | #8 BOJ3048 개미 C++ 문제 풀이

3048번: 개미 (acmicpc.net) 왼쪽에서 오른쪽으로 이동하는 개미 사이 사이에 오른쪽에서 왼쪽으로 이동하는 개미 그룹이 들어간다는 발상으로 풀었다. 예를 들면, A B C 와 D E F가 만나는 상황에서 _ A _ B _ C _ 네 개의 빈칸에 DEF가 들어간다. 이 네 개의 빈칸을 벡터로 만들어 T초에 맞게 코드를 짰다. 다 풀고나서 제출했더니 메모리 초과 문제가 발생하였다. 알고보니 j=0으로 시작하는 for 문에서 j-1 indexing을 해서 생긴 문제였다. j=1부터 시작하는 것으로 바꾸어서 해결했다. #include #include #include #include int main() { // 첫번째 그룹, 두번째 그룹의 사이즈 int n1, n2; std::string ant1_tm..

Backend 기초 #3 | API, Rest API란? (Application programming interface)

API Application Programming Interface API란? API는 두 소프트웨어가 통신할 수 있게 해주는 일종의 매커니즘이다. API는 데이터를 어떤 방식으로 요청할 수 있는지(요청), 어떤 데이터를 제공받을 수 있는지(응답) 등을 정한다. 예를 들면, 기상청 소프트웨어와 휴대폰의 날씨 앱을 예시로 들 수 있다. 휴대폰 날씨 앱에서 기상청 소프트웨어가 가지고 있는 기상 데이터를 기상청 API를 통해 받아오는 식이다. API 아키텍처는 주로 클라이언트와 서버로 설명된다. 클라이언트는 휴대폰 날씨 앱과 같이 데이터를 받아오기 위해 요청을 보내는 측을 말하고, 서버는 기상청 소프트웨어처럼 요청 받은 내용을 처리하는 측을 의미한다. REST API REST API는 웹에서 가장 많이 사용되..

Backend 기초 #2 | 쿠키(Cookie), 세션(Session)이란?

웹 상에서 클라이언트와 서버가 정보를 주고 받는 방식을 규정하는 HTTP는 비연결 프로토콜(Connectionless Protocol), 비상태 프로토콜(Stateless protocol) 특성으로 인해 페이지의 상태를 기억하지 못한다. 이 때문에 사용자는 웹페이지에 접속할 때마다 새롭게 로그인하는 등 이전에 수행했던 작업을 반복해야할 수 있다. 이를 극복하기 위해 쿠키(Cookie)와 세션(Session)이 등장한다. 쿠키(Cookie)와 세션(Session)은 모두 웹 통신에서 필요한 정보를 저장하기 위한 방식이다. 쿠키(Cookie) 쿠키(Cookie)는 서버에 요청해서 사용자 PC에 저장하는 client의 정보/상태 등의 데이터를 의미한다. 쿠키(Cookie)에 포함되는 데이터에는 사용자 ID, ..

Backend 기초 #1 | HTTP HyperText Transfer Protocl이란?

HTTP HyperText Transfer Protocol은 웹 상에서 정보를 주고받는 방식을 정하는 프로토콜(규칙)이다. 주로 HTML 문서를 주고 받는 데 쓰이는 HTTP는 클라이언트와 서버가 통신하는 방식을 정한다. 클라이언트(웹 브라우저)는 HTTP를 통하여 서버에 필요한 정보를 요청(Request)하고, 서버는 클라이언트의 요청에 응답(Respond)하여 필요한 데이터를 클라이언트에게 전달한다. HTTP는 일정한 메시지의 포맷을 가지고 있다. 클라이언트가 서버에 보내는 요청 메시지(Request) 기본적으로 Request + URL + header + body의 꼴을 취한다. 예를 들면, GET /images/logo.gif HTTP/1.1 GET https://naver.com 와 같이 사용할..

백준 C++ | #7 BOJ1018 체스판 다시 칠하기 C++ 문제 풀이

1018번: 체스판 다시 칠하기 (acmicpc.net) 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net #include #include int main() { // input int n, m; std::cin >> n >> m; char** chess = new char* [n]; for (int i = 0; i < n; i++) { chess[i] = new char[m]; } char getline; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j..

백준 C++ | #6 BOJ11508 2+1 세일 C++ 풀이

11508번: 2+1 세일 (acmicpc.net) 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net #include #include #include bool compae(int i, int j) { return j > n; std::vector lst(n); int tmp = 0; for (int i = 0; i > tmp; lst.push_back(tmp); } std::sort(lst.begi..

백준 C++ | #5 BOJ1427 소트인사이드 C++ 문제 풀이

1427번: 소트인사이드 (acmicpc.net) 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net #include #include #include bool compare(int i, int j) { return j > n; int size = 0; while (n > 0) { num.push_back(n % 10); n /= 10; size++; } std::sort(num.begin(), num.end(), compare); for (int i = 0; i < size;i++) { std::c..

백준 C++ | #4 BOJ 11399 ATM 문제 풀이

11399번: ATM (acmicpc.net) 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net #include #include int main() { // 정렬해서 합하기 int size; std::cin >> size; int* money = new int[size]; for (int i = 0; i > money[i]; } std::sort(money, money + size); int sum = money[0]; for (int i = 1; i < size; i++) { money[i] = ..