백준 1717번 집합의 표현 에 Union-Find 알고리즘을 적용하여 문제를 풀었는데 같이 푼 다른 사람들은 다 맞는데 나만 시간초과가 났다. 같은 알고리즘의 같은 방식의 예외처리를 한 사람도 있었는데 도대체 왜 시간초과가 났을까? 친구에게 조언을 구해보니 문제는 cin과 cout에 있었다. 나는 c++을 사용할 때 입출력 함수로 cin과 cout을 사용하는데, cin과 cout은 printf와 scanf에 비해 어마무시하게 느리다는 사실을 듣게되었다. 왜 속도가 차이가 날까? cstdio의 prinft, scanf는 데이터의 타입을 프로그래머가 지정해줘야해서 오류가 발생할 수는 있지만 더욱 빠른 속도를 내고iostream의 cout, cin은 입출력 데이터의 타입을 프로그래머가 지정해주지 않아도 타입..
프로세스는 실행중인 프로그램이라고 할 수 있다. 하나의 프로세스의 메모리는 heap, stack, data, code 영역을 갖는다.프로세스는 스레드를 포함한다. 스레드는 프로세스 안에서 실행되는 흐름의 단위 이다.스레드는 stack만 따로 갖고 heap, data, code 영역은 공유하여 사용한다. 각각의 프로세스끼리는 독립적이지만 스레드끼리는 자원을 공유하여 사용하기 때문에 독립적이지 않다.병렬 처리 기법인 멀티 프로세스, 멀티 스레드를 보며 차이를 알아보자. 프로세스나 스레드는 한 번에 한개씩 동작한다고 생각하면 좋다. 한 번에 한개씩 동작하는 프로세스를 동시에 사용하기 위해서는 여러개의 프로세스를 빠른 속도로 번갈아가며 실행하는 것이다. 빠른 속도로 번갈아가며 실행하기 때문에 동시에 사용하는 것..