728x90

프로그래밍 410

백준] 8979 - 올림픽(KOI 2013)

시간 제한 : 1초메모리 제한 : 128MB 입력입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 국가를 나타내는 정수와 이 국가가 얻은 금, 은, 동메달의 수가 빈칸을 사이에 두고 주어진다. 전체 메달 수의 총합은 1,000,000 이하이다. 출력출력은 단 한 줄이며, 입력받은 국가 K의 등수를 하나의 정수로 출력한다. 등수는 반드시 문제에서 정의된 방식을 따라야 한다. 소스코드 #include #include using namespace std; struct nation { int id, gold, silver, bronze, ran..

C, C++] 메모리 영역(Code, Data, Stack, Heap)

프로그램 실행 시 할당되는 메모리 영역은 Code, Data, Stack, Heap, 네 가지로 분류할 수 있는데, 이에 대한 이해가 아예 없는 상태에서도 자연스럽게 Stack, Heap에 대한 감이 잡히게 된다. 확실히 이들에 대해서 조금 정리해두는 것이 좋을 것 같아 글을 끄적여 놓는다. Code작성한 코드라고 보면 되며 프로그램 종료 시점까지 메모리에 적재됨. Data전역 변수, static 변수 등이 저장되는 영역으로 이 역시 프로그램 종료 시점까지 메모리에 적재됨. Stack자료구조를 접한 사람들이 아는 그 스택의 성격(LIFO)을 가지고 있음.함수 호출, 지역 변수, 매개 변수, 반환 값 등을 저장하며, 함수 종료 시점에 시스템에 반환됨.프로그램에서 사용하는 임시 메모리 영역으로, 컴파일 시점..

C,C++] malloc과 new의 차이점

C를 배우고 C++로 넘어와서 동적할당을 하다 보면, 아주 자연스럽게 C++에서는 new만 사용하게 된다. 모든 걸 신경 써야 하는 malloc과는 다르게 타입 지정도 필요 없고 할당해버리면 끝인 new만 사용하면 그만이라고 생각하기에는 너무 막연하고 쉽게 넘어가는 것 같아 이 둘의 차이점에 대해서 정리해두고자 한다. malloc은 라이브러리에서 제공하는 함수, new는 연산자다.malloc은 함수로, 원하는 만큼의 메모리를 sizeof()를 이용해 바이트 단위로 할당해 void* 형식으로 반환한다. 그렇기 때문에 적합한 형식으로 지정해주어야 하는 캐스팅 과정이 필요하다.new는, 함수가 아니라 연산자로 메모리의 사이즈와 형식을 지정해 해당 타입의 포인터를 반환하므로, 형식을 지정해주지 않아도 되기 때문..

백준] 5554 - 심부름 가는 길(JOI 2011 예선)

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 총 4줄이며, 한 줄에 하나씩 양의 정수가 적혀있다.첫 번째 줄에 집에서 학교까지의 이동 시간을 나타내는 초가 주어진다.두 번째 줄에 학교에서 PC방까지의 이동 시간을 나타내는 초가 주어진다.세 번째 줄에 PC방에서 학원까지의 이동 시간을 나타내는 초가 주어진다. 마지막 줄에 학원에서 집까지의 이동 시간을 나타내는 초가 주어진다.집에 늦게 가면 혼나기 때문에, 총 이동시간은 항상 1 분 0 초 이상 59 분 59 초 이하이다. 출력총 이동시간 x 분 y 초를 출력한다. 첫 번째 줄에 x를, 두 번째 줄에 y를 출력한다. 소스코드 #include using namespace std; int main(void) { int a, b, c, d, x, y,..

백준] 1551 - 수열의 변화

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 수열의 크기 N과 K가 주어진다. N은 20보다 작거나 같은 자연수이고, K는 0보다 크거나 같고, N-1보다 작거나 같은 자연수이다. 둘째 줄에는 수열이 ‘,’로 구분되어 주어진다. 출력첫째 줄에 K번 변형한 수열을 ‘,’로 구분하여 출력한다. 소스코드#include #include #include using namespace std; void tokenizer(string& str, vector& token, string delimiter) { size_t lastPos = str.find_first_not_of(delimiter, 0); size_t pos = str.find_first_of(delimiter, lastPos); while ..

백준] 1032 - 명령 프롬프트

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 알파벳과 "." 그리고 "?"로만 이루어져 있다. 출력첫째줄에 패턴을 출력하면 된다. 소스코드 #include #include using namespace std; int main() { int n, len; char s[51], c; cin >> n >> s; len = strlen(s); for (int i = 1; i > c; s[j] = s[j] - c ? '?' : c..

백준] 4613 - Quicksum(ACM-ICPC Regional)

시간 제한 : 1초메모리 제한 : 128MB 입력인풋에 # 이 들어오기 전까지 계속 입력을 받는다. 각각의 패킷은 한줄에 하나씩 입력이 되며 공백으로 시작되거나 끝나지 않으며, 대문자만 입력이 된다. 패킷의 길이는 1~255자이다. 출력각각의 패킷에 따라 한줄에 하나씩 Quicksum 을 출력하라 소스코드 #include #include using namespace std; int main(void) { while (1) { string s; getline(cin, s); if (s == "#") break; int sum = 0, len = s.length(); for (int i = 0; i < len; i++) { if ((char)s[i] == ' '); else sum += (int)(s[i] ..

백준] 7785 - 회사에 있는 사람(KBTU)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 출근, "leave"인 경우는 퇴근이다.회사에는 동명이인이 없으며, 대소문자가 다른 경우에는 다른 이름이다. 출력현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다. 소스코드 #include #include #include #include #include using namespace std; int main(void) { int n; map list; cin >> n; while (n--) { string ..

728x90