본문 바로가기

분류 전체보기30

[백준][c++]14500-테트로미노 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 백준의 실버5 문제 "4920-테트리스 게임" 과 매우 유사하다. 차이점은 이 문제에서는 주어진 테트로미노를 회전뿐만 아니라 대칭도 시켜도 된다는 점이다. 인풋으로 주어진 숫자를 2차원 배열에 넣어주고, 순차적으로 순회를 하며 대응 가능한 모든 테트로미노를 대입해보면 쉽게 정답을 얻을 수 있다. 풀이 자체는 단순하지만, 테트로미노를 잘못 찍으면 디버깅하기가 어려우므로 신중하게 해야 한다. 각 도형.. 2022. 6. 12.
포인터와 동적 메모리 동적 메모리를 이용하여 컴파일시 크기를 확정할 수 없는 데이터를 다룰 수 있다. 스택과 힙 스택은 층층이 쌓인 햄버거에 비유할 수 있다. 제일 위의 햄버거는 프로그램의 현재 스코프를 표현한다.(주로 실행중인 함수). 실행중인 함수에서 선언된 변수는 모두 최상단의 햄버거에 해당하는 최상단 스택 프레임(stack frame)의 메모리 공간에 담겨 있다. 스택 프레임은 각각의 함수마다 독립적인 메모리 공간을 제공한다. 함수의 실행이 끝나면 해당 스택 프레임이 삭제되기 때문에 함수 안에서 선언된 로컬 변수가 더 이상 메모리 공간을 차지하지 않는다. 즉, 메모리 할당 해제(deallocate)가 필요하지 않다는 것이다. 힙은 스택프레임과는 완전히 독립적인 메모리 공간이다. 함수가 끝난 후에도 그 안에서 사용하던 .. 2022. 5. 27.
[백준][C++]11399-ATM https://www.acmicpc.net/problem/11399 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라진다고 한다. 예시에서도, 인출 하는데 소요되는 시간이 가장 적은 2번 사람이 먼저 돈을 인출하고, 차례로 5번,1번,4번 그리고 마지막으로 3번사람이 돈을 인출 할 때 시간의 합의 최솟값을 얻을 수 있다고 한다. 그렇다면, 둘째 줄에 주어진 시간 데이터를를 오름차순으로 정렬한다면 간단하게 원하는 순열을 얻을 수 있다. #include #include #include #include using namespace std; int main() { int n, a; std::vector data; std::vector sum_data; cin >> n; //데이터 입력.. 2022. 5. 27.
[백준][C++]1158-요세푸스 문제 0 자료구조의 이해도를 묻는 문제이다. STL에서 제공하는 queue 를 사용하면 쉽게 풀 수 있다. 주어진 1번부터 N명까지의 사람들을 큐에 집어넣고, 큐가 완전히 empty가 될때까지 계속 사람을 제거하는 작업을 수행해 준다. #include #include using namespace std; int main() { int k,n; cin >> n >> k; queue q; for(int i = 1; i 2022. 5. 27.
[네트워크]TCP vs UDP TCP UDP 연결형 프로토콜 종단간의 연결설정, 흐름제어, 오류제어 YES 패킷 전송이 확실하게 되었는지 확인이 가능하니 신뢰성 UP 비연결형 프로토콜 종단간의 연결설정, 흐름제어, 오류제어 NO UDP는 속도가 빠르기에, 게임 네트워크같은 곳에서 많이 사용된다. 2022. 5. 27.
[운영체제]프로세스(Process)와 스레드(Thread) 요약 : 운영체제(프로세스1(스레드,스레드,스레드), 프로세스2(스레드,스레드,스레드).....) 참으로, 다단계 같은 구조다. 프로세스는 운영체제부터 자원을 할당 받아 실행하고, 스레드는 프로세스로부터 자원을 할당 받아 실행한다. 인간이 만들어서 그런지 정말 사회 구조 같은 방식이다. 프로세스는 실행 중인 프로그램을 뜻한다. 하나의 프로세스에는 독립된 메모리 공간을 할당한다. (그래서 프로세스간에 정보를 주고받기 위해 수많은 IPC기법이 만들어졌지만....) 물론 이 메모리 공간은 고정은 아니고, 프로세스가 OS에게 요청하면 추가로 배급(?)을 받는다. 물론 OS라고 무한한 메모리 공간을 보유한 것은 아니기에 빈 공간이 있을 때만 가능. 스레드는 메모리 공간을 할당 받은 프로세스 내에서 동작을 처리하는.. 2022. 5. 27.
[프로그래머스]키패드 누르기(c++) https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 복잡한 알고리즘을 요구하는 문제는 아닙니다. 단, 처음에 문제를 주의 깊게 읽지 않으면 많은 시간을 낭비 할 수 있습니다. #include #include #include #include ; #include using namespace std; stru.. 2022. 5. 16.
[프로그래머스]완주하지 못한 선수(C++) https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 중복된 이름을 가진 선수가 있을 수 있으므로, multiset이 적합합니다. 참가한 선수들의 이름을 multiset에 저장하고, 완주한 선수들의 이름이 저장된 vector를 for-each 순회를 시키면서 multiset에 저장된 선수들을 지워줍니다. 최종적으로, 완주하지 못한 선수만이 multiset에 남아 있게 됩니다. #include #.. 2022. 5. 16.
[프로그래머스]소수만들기(c++) https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 순열(permutation)의 이름만 기억하면 매우 쉽게 C++에서도 주어진 숫자들 중에서 원하는 개수 만큼 뽑아서 묶을 수 있습니다. #include #include #include using namespace std; bool is_prime(int n) { for (int i = 2; i * i 2022. 5. 16.