[ 백준 14534번 ] String Permutation

2023. 2. 14. 09:24·Algorithm/문제풀이

1. 문제

 

14534번: String Permutation

First line of the input contains T (1 ≤ T ≤ 200), the number of test cases. For each test case, there will a string of characters, L (1 ≤ L ≤ 5).

www.acmicpc.net

 

2. 풀이

 

백트래킹의 가장 기본적인 유형인 순열 만들기 문제다. 집합의 요소를 사용했는지를 판단할 boolean 배열을 선언하여, 각 요소들의 사용여부를 변경해가며 순열을 만들면 해결할 수 있다.

 

다만 현재 문제는 조합(Combination)이 아닌 순열(Permutation)이므로, 백트래킹을 할 재귀 함수 내에서 시작지점은 항상 첫 요소로 설정해야 한다. 시작지점부터 앞서 선언한 boolean 배열을 통해 사용하지 않은 요소가 있다면 사용하여 재귀를 돌리고, 다시 사용하지 않겠다고 선언하여 다른 경우의 수를 체크하는 것이다.

 

3. 소스코드

더보기
public class Main {

    static char[] line;

    static void permutation(int len, String str, boolean[] visit) {
        if (len == line.length) {
            System.out.println(str);
            return;
        }

        for (int i = 0, n = line.length; i < n; i++) {
            if (visit[i]) continue;

            visit[i] = true;
            permutation(len + 1, str + line[i], visit);
            visit[i] = false;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        for (int i = 1; i <= N; i++) {
            line = br.readLine().toCharArray();

            System.out.printf("Case # %d:\n", i);
            permutation(0, "", new boolean[line.length]);
        }

        br.close();
    }
}

 

 

GitHub - kwanik-kor/BOJ: Baekjoon Online Judge - explanation of solved problems and complete code

Baekjoon Online Judge - explanation of solved problems and complete code - GitHub - kwanik-kor/BOJ: Baekjoon Online Judge - explanation of solved problems and complete code

github.com

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > 문제풀이' 카테고리의 다른 글

[ 백준 20304 ] 비밀번호 제작  (0) 2023.02.18
[ 백준 9742 ] 순열  (0) 2023.02.17
[ 백준 6148번 ] Bookshelf 2  (0) 2023.02.13
[ 백준 2573 ] 빙산  (0) 2023.02.13
[ 백준 16959 ] 체스판 여행 1  (0) 2023.02.09
'Algorithm/문제풀이' 카테고리의 다른 글
  • [ 백준 20304 ] 비밀번호 제작
  • [ 백준 9742 ] 순열
  • [ 백준 6148번 ] Bookshelf 2
  • [ 백준 2573 ] 빙산
갈닉
갈닉
중요한 건 엔지니어가 되겠다는 마음. 근데 이제 인문학을 곁들인.
    반응형
  • 갈닉
    KwanIk Devlog
    갈닉
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • Algorithm (41)
        • 알고리즘 개요 (8)
        • 문제풀이 (33)
      • Language (2)
        • Java (1)
        • Javascript (0)
        • Go (0)
        • Rust (1)
      • Framework (0)
        • Spring (0)
        • Spring Security (0)
        • Spring JPA (0)
      • Computer Science (1)
        • 프로그래밍 언어 (0)
        • 자료구조 (1)
        • 보안 (0)
      • DevOps (1)
        • MSA (0)
        • TDD (1)
        • DDD (0)
      • 개발서적 (3)
        • 오브젝트 (3)
      • Life (5)
        • 생각생각 (4)
        • 회고록 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

    • My Github
  • 공지사항

  • 인기 글

  • 태그

    bitmask
    오브젝트
    백트래킹
    java
    깊이우선탐색
    알고리즘
    너비우선탐색
    객체지향
    백준
    비트마스크
    욕심쟁이알고리즘
    BruteForce
    BFS
    boj
    DP
    backtracking
    시뮬레이션
    구현
    greedy
    Algorithm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
갈닉
[ 백준 14534번 ] String Permutation
상단으로

티스토리툴바