-
[백준 Baekjoon] 10812 바구니 순서 바꾸기알고리즘 2018. 10. 6. 04:24
1 번 부터 N 번 까지 적혀 있는 N 개의 바구니가 순서대로 놓여져 있다. 시작 지점, 중간 지점, 끝 지점 을 지정하여 [ 중간 지점부터 끝 지점 ] 부터 [ 시작 지점 부터 중간 지점 ] 까지 순서로 바꾸는 작업을 반복한다. M 번의 작업이 끝난 후 바구니의 순서를 출력하는 문제. * std::rotate[ http://www.cplusplus.com/reference/algorithm/rotate/ ] - 시작 지점, 중간 지점, 끝 지점을 인자로 넘겨준다. - 중간 지점부터 시작하는 next 변수를 사용한다. - 시작 지점과 next 값을 swap 하고 둘 모두를 증가시키는 것을 반복한다. - next 가 끝 지점에 먼저 도착했을 경우 next를 중간 지점 값으로 옮겨 반복한다. - 시작 지점부..
-
[백준 Baekjoon] 10811 바구니 뒤집기알고리즘 2018. 10. 6. 03:47
1 부터 N 까지 번호가 적혀 있는 N 개의 바구니가 순서대로 놓여 있다. 범위를 지정하여 해당 범위에 있는 바구니의 순서를 역으로 바꾸는 작업을 M 번 진행한다. M 번의 작업이 진행된 후 바구니가 놓여있는 순서를 출력하는 문제. * std::reverse[ http://www.cplusplus.com/reference/algorithm/reverse/ ] - 시작 지점과 끝 지점을 지정한다. - 시작 지점과 끝 지점을 swap 한 후 시작 지점은 증가, 끝 지점은 감소 시켜 반복한다. 풀이 :
-
[백준 Beakjoon] 10810 공 넣기알고리즘 2018. 10. 6. 03:21
1 번 부터 N 번 까지 번호가 매겨져 있는 N 개의 바구니가 있다. 또, 1 번 부터 N 번 까지 번호가 적혀 있는 공을 매우 많이 가지고 있다. M 번에 걸쳐 공을 넣는데, 한 번 공을 넣을 때 범위를 지정하고 공 번호를 선택하여 지정된 범위의 바구니에 선택된 번호의 공을 한번에 넣는다. 바구니 안에 공이 이미 있다면 기존의 공을 빼고 지금 넣고자 하는 공을 넣는다. 바구니의 범위는 연속된 범위여야 한다. M 번에 걸쳐 공을 넣은 상태에서 각 바구니에 몇 번 공이 들어 있는지 구하는 문제. * std::fill[ http://www.cplusplus.com/reference/algorithm/fill/ ] - 시작 지점과 끝 지점, 채우고자 하는 값을 인자로 넘겨준다. - 시작 지점부터 끝 지점까지 ..
-
[백준 Baekjoon] 10809 알파벳 찾기알고리즘 2018. 10. 6. 03:08
알파벳 소문자로만 이루어진 단어 S가 주어졌을 때, a~z 까지 각각의 알파벳이 처음 등장하는 위치를 찾는 문제. 즉 acb 라는 단어가 주어지면 a는 0번째 위치에 b는 2번째 위치에 c는 1번째 위치에 있고 나머지는 모두 존재하지 않기 때문에 [ 0 2 1 -1 -1 -1 ... -1 ] 로 출력한다. * std::find[ http://www.cplusplus.com/reference/algorithm/find/ ] - 확인하고자 하는 자료의 시작 지점과 끝 지점, 찾고자 하는 값을 인자로 넘겨준다. - 시작 지점부터 끝 지점까지 찾고자 하는 값과 비교를 하며 가장 먼저 발견된 위치를 return 한다. - 만약 찾지 못했다면 last 를 return 한다. * std::string::npos[ h..
-
[백준 Baekjoon]5567 결혼식알고리즘 2018. 6. 13. 17:05
상근이는 자신의 결혼식에 학교 동기 중 자신의 친구, 친구의 친구 까지만 초대하기로 했다. 즉 상근이의 친구와 그 친구들의 친구까지만 초대를 하겠다는 것이다. 상근이 동기들의 친구 관계 리스트가 주어졌을 때 결혼식에 초대할 사람의 수를 구하는 문제. 풀이 : sgFriend : 상근이의 친구friendMap : 각 동기 별 친구 목록inviteMap : 초대될 동기 목록 (0인 경우 초대하지 않을 동기, 1인 경우 초대할 동기) 입력을 받으면서 상근이의 친구라면 sgFriend에, 아니라면 friendMap에 저장한다.[* 이 때, a b가 주어진다면 b는 a의 친구이면서 a는 b의 친구이기 때문에 a의 친구목록에 b를, b의 친구목록에 a를 같이 추가해준다.] 상근이의 친구를 확인하면서 그 친구의 친구..
-
[백준 Baekjoon]1068 트리알고리즘 2018. 6. 12. 21:07
트리가 주어진다. 입력은 노드의 개수, 각 노드의 부모 노드의 번호로 주어진다. 마지막에 지우고자 하는 노드 번호가 주어진다.지우고자 하는 노드를 지운 후 남은 트리에서 리프 노드의 개수를 구하는 문제이다. 풀이 : 상세풀이 : 지우고자 하는 노드의 자식 노드들을 모두 지우는 함수이다.만약 자신을 부모노드로 가지는 노드가 있다면 해당 노드에 대해서도 이 함수를 적용한다. 리프노드의 개수를 세는 함수이다. 자신을 부모노드로 가지는 노드가 있다면 그냥 return하고 없다면 리프노드이므로 개수를 하나 더해준다.
-
[백준 Baekjoon]4963 섬의 개수알고리즘 2018. 6. 12. 17:55
하나의 정사각형은 땅 또는 바다를 나타낸다. 그림에서는 땅이 어두운 색, 바다가 흰 색 이지만 실제 데이터는 땅이 1 바다가 0으로 주어진다. 땅이 상,하,좌,우,대각선 중 하나라도 이어져 있다면 같은 섬에 있는 것으로 간주한다.지도가 주어졌을 때 섬의 개수를 출력하는 문제이다. 풀이 : 상세풀이 : 입력의 마지막 줄이 '0 0'으로 주어지기 때문에 while의 조건을 w 또는 h로 걸어준다. x좌표와 y좌표를 동시에 저장하기 위해 pair 큐를 생성해준다. 상,하,좌,우,대각선 총 8방향을 체크하기 위해 checkPosition 2차원 배열을 위와 같이 정의한다.numLand는 섬의 개수를 저장 할 것이다. (0, 0)부터 (h-1, w-1)까지 모든 좌표를 돌아본다. 만약 지도의 해당 칸이 땅이라면 ..