본문 바로가기

전체 글45

[백준 2644] 촌수 계산 https://www.acmicpc.net/problem/2644 해설 전형적인 BFS 문제라 해설할 건 따로 없고 그냥 BFS 돌려주면 된다. 처음에 서로 다른 두 사람의 번호를 입력받고 i) 두 사람의 번호가 같으면 자기 자신이니 0 출력 ii) 두 사람 중 한명의 좌표를 BFS 돌려서 큐에 들어간 값이 다른 사람의 좌표와 같아지면 카운트 출력하고 프로그램 종료. iii) 두 사람이 연결되어있다면 while 문안에서 프로그램이 종료된다. 하지만 만약에 while 문 내에서 프로그램이 끝나지 않고 끝까지 가면 두 사람은 서로 연결되어있지 않은 것이니 마지막에 -1 출력하나 놔둔다. ˙˙˙ 소스코드 #include #include #include using namespace std; int main(){.. 2020. 3. 23.
[백준 14940] 쉬운 최단거리 https://www.acmicpc.net/problem/14940 해설 2인 지점이 도착 지점이라고 했으니 2인 지점을 초기 좌표로 설정해놓고 각 지점까지의 최단 거리를 구하면 되는 문제이다. 따라서 각 지점으로부터 우리가 알고 있는 BFS를 돌려주면 끝이다. 문제에서 원래 땅인 부분 중에서 도달할 수 없는 위치는 -1로 출력하라고 하니 이 부분만 조심해주면 될 거 같다. ˙˙˙ 소스코드 #include #include using namespace std; int xr, yr,cnt; int di[4] = { -1, 0, 1, 0 }; int dj[4] = { 0, 1, 0, -1 }; int arr[1001][1001]; int res[1001][1001]; bool visited[1001][1001.. 2020. 3. 23.
[C++ STL] pair 에서 make_pair 대체 문제 c++ 문제 풀 때 구조체 쓰기 귀찮고 인자를 묶고 싶을 때 보통 pair를 쓰곤 한다. 손이 편하면 머리가 힘들어지는 법, 외워야하는 게 더 늘어나기 마련이다. 그 중 하나가 pair에서 make_pair를 쓰는 것인데, 일단 make_pair 자체가 9자나 되고 한 소스 안에 pair를 이용한 코드들이 많이 들어있다면 손이 힘들어질 수있다.( 사실 억지긴 하다.) 그래서 make_pair을 안쓰고 pair에 값을 담아줄 수있는 코드를 찾아보게 되었다. 해결 우리는 c++ 11 이상부터 pair에 초기화 리스트를 사용할 수있다고 한다. 중요한 점은 c++ 11 버전이상부터 라는 점이다. ( 이걸 못보고 나중에 글쓴이를 욕하지 마라. ) 사용 법은 매우 간단하다. make_pair() 대신 {} 로.. 2020. 3. 22.
Dev c++ 에서 c++ 14 사용하는 법 (dev c++ 버전) 문제 Dev c++ 에서 고급 문법( 최신 C++에서만 먹히는 )들을 쓰다가 컴파일 에러가 뜨는 경우들이 있어 알아보았다. 문제점은 Dev c++ 최신 버전을 깔아도 우리가 흔히 사용하는 c++ 14로 자동 적용이 되지 않는다는 것이다. (여러모로 이 프로그램이 유료가 아닌게 다행이다.) 해결 방안 평소처럼 또 구글링을 해보았다. 1. 프로그램 상단에 있는 툴 중 도구를 누르고 컴파일러 설정에 들어간다. 2. 컴파일러 추가 명령을 체크해주고, 그 밑 텍스트 박스 안에 -std=c++14 라고 적어준다. 추가로 원하는 버전이 있다면 c++ 옆 14를 원하는 버전의 숫자로 써주면 된다. 2020. 3. 21.