'SW 업무 관련' 카테고리의 글 목록 (12 Page)

SW 업무 관련 117

[BAEKJOON] 9934_완전 이진 트리_C언어

https://www.acmicpc.net/problem/9934 풀이 문제의 이름대로 두 갈래씩 갈라지면서 주어진 조건에 맞게 트리를 출력하는 문제이다. 문제에서 주어진 입력에 대한 탐색 순서를 나타내었다. 1. 우선 트리의 가장 왼쪽 끝인 1번 노드로 간다. 2. 그 후 더 진행할 노드가 없으므로 6번 노드를 방문한다. 3. 왼쪽은 이미 방문했으니 4번 노드로 간다. 4. 4번노드 방문 후 6번 노드를 방문했으므로 3번 노드로 간다. 5. 3번 노드에서 왼쪽은 이미 다 방문 했으므로 오른쪽으로 갈래의 노드로 내려간다. 6. 이 경우로 왼쪽 끝 노드인 5번 노드를 우선적으로 방문 한다. 7. 5번 노드에서 더 내려갈 곳이 없으므로 5번 노드를 나와 2번 노드를 방문한다. 8. 마지막으로 방문하지 않은 ..

[BEAKJOON] 1182_부분집합의 합_C언어

https://www.acmicpc.net/problem/1182 풀이 부분집합의 합을 구하여 입력된 S와 같은 부분집합의 개수를 출력하는 문제이다.여기서 내가 생각하는 중요한 점은 두 가지이다. 1. 부분집합을 구하는 방법2. 부분집합을 구하는 중간에 S와 같다고 개수를 카운트하면 안 된다는 것이다. 설명부분집합을 구하는 방법은 아래 그림과 같이 그래프를 그려 표현할 수 있다. 그림은 이상하지만...위의 그림처럼 입력된 배열의 값들을 사용할지 안 할지를 구분해가면서 트리의 끝에 가서 부분집합의 합을 구하여야 된다는 것이다. 마지막에 부분집합의 구해야되는 이유는 만약 N이 5, S가 3이며 입력되는 수들이 1 1 2 -1 1을 예로들면N=5, S=3, arr[5]={1,1,2,-1,1} 3=arr[0]+..

[BAEKJOON] 11723_집한_C언어

https://www.acmicpc.net/problem/11723풀이비트마스크를 이용하여 문제를 풀었다. 이번에 비트마스크를 처음 공부하여 내가 이해한 것이 맞는지는 정확한지 모르겠다. 위의 문제에서 x의 범위가 1이상 20이하 이므로 20비트로 20로 2^20가지 경우의수를 표현하는 것 같다. Ex) S는 이진수로 0000 0000 0000 0000 0000인 상태이다.여기서 1이라는 경우의 수가 입력되면 0000 0000 0000 0000 0010여기서 2이라는 경우의 수가 입력되면 0000 0000 0000 0000 0110여기서 8이라는 경우의 수가 입력되면 0000 0000 0001 0000 0110이라는 식으로 2진수로 어떤 수를 포함하고 있는지 표현해주는 것 같다. 위에는 0~19까지 표현..

[BAEKJOON] 10971_외판원 순회 2_C언어

https://www.acmicpc.net/problem/10971 풀이경로를 탐색하는 탐색문제이다. 처음에 출발점이 안 주어져 있어서 모든 노드를 반복문으로 출발점으로 하여 탐색을 하였다. 그러나 문제에서는 마지막에 처음 출발한 경로로 다시 돌아와야 하기 때문에 모든 노드를 출발점으로 탐색할 필요가 없었다. Ex)답이 1-2-3-4-1이라고 하면 나는 for(int i=1;i

[BAEKJOON] 1406_에디터_C언어

https://www.acmicpc.net/problem/1406풀이처음에 단순히 배열을 사용하여 풀고자 하였습니다. Point라는 변수를 커서 역할로하여 L이면 Point를 왼쪽으로, D면 오른쪽으로, B면 삭제하고 0을 대입하여 출력시 0이면 뛰어 넘도록 하였습니다. 그리고 P를 입력 받으면 입력되야되는 부분 뒤로 배열을 전부 한 칸씩 이동시켰습니다. 위는 처음 생각한 풀이에서 P를 수행할 때 x가 입력되야되는 지점 뒤로 다 뒤로 한 칸씩 미루고 대입을 하였습니다. 이 경우 명령에 대한 수행과 배열을 미루는 수행으로 인해 시간 복잡도가 n^2이 되어 시간초과가 나더군요. 그래서 2개의 배열로 스택 2개를 만들어서 문제를 풀었습니다. 처음 ABCDE를 입력 받은 후 순서대로 L, D, B, P x를 수..

[1] DFS 재귀함수 연습.// 팩토리얼

//숫자 n을 입력받아 n!를 출력하는 예제.//재귀함수를 이용한다. #include int factorial(int n){if (n == 1) return 1; return n*factorial(n - 1);} int main(){int n; printf("숫자를 입력하세요.");scanf_s("%d", &n); printf("%d", factorial(n)); return 0;} 예로 n에 5를 대입하면 factorial 함수 호출. 1. return n*factorial(n - 1); -> 5*factorial(4); 여게서 factorial(4) 호출.2. return 4*factorial(3); 여기서 factorial(3) 호출.3. return 3*factorial(2); 여기서 factor..