CS/C++ 2

[C++] 순열, 조합, 중복순열, 중복조합 구현

문제를 풀다보면 종종 순열, 조합, 중복순열, 중복조합을 이용하는 경우가 있다. 이번 포스팅에서는 각각의 정의와 c++로 구현하는 방법에 대해 정리해보았다. 1. 순열 : 순서를 따지고, 중복을 허용하지 않는다. 중복을 허용하지 않기 때문에, 중복을 검사하는 visitied 처리가 필요하다. depth로 r만큼의 길이를 출력해준다. 그렇지 않다면 중복을 검사한 후, 재귀로 함수를 부른다. depth가 r이 될때, 순열이 완성된 것이므로, 순열을 출력해주고 backtracking해준다. backtracking을 수행한 뒤, check[i] = false로 다음 루프에서 해당 숫자를 사용할 수 있게 한다. 그렇지 않으면, 한번 사용된 숫자는 계속 사용중으로 표시가 되어, 그 숫자가 다른 가능한 순열 위치에서..

CS/C++ 2023.11.23

switch case문 jump to case label 오류

이번에 코드에 switch문을 쓰다가 더보기 error: cannot jump from switch statement to this case label 이런 에러를 마주하였다. 처음 보는 오류라 구글링을 해본 결과 간단한 문법 오류로 블럭 {} 으로 감싸주면 해결됨을 알아냈다. 그렇다면 왜 이런 오류가 나는걸까? 제어 전달은 변수의 범위를 입력할 수 없으므로, 명령문 내에서 선언문이 나타나면 자체 선언문에서 범위를 지정해주어야한다고 한다. 즉, 변수 x를 case문에서 선언했을때 case문에서의 범위를 지정해주어야 error발생 없이 넘어갈 수 있다. ∴ 결론 : case문에서 변수 사용시 블럭으로 범위를 구분지어주어야 한다. https://blankspace-dev.tistory.com/386 (참고 ..

CS/C++ 2021.11.20
728x90