Input: "12"
사람이 푸는 방법:
1. 첫 번째 자리에 1을 놓고, 나머지 2로 순열 만들기 -> "12"
2. 첫 번째 자리에 2를 놓고, 나머지 1로 순열 만들기 -> "21"
Step 2: 접근 방법
문제의 일반화 규칙 찾기:
한 문자를 고정하고
나머지 문자들로 가능한 모든 순열을 만든다
이 과정을 모든 문자에 대해 반복한다
약식 알고리즘 표:
입력: s = "123"
1단계: "1"을 고정
↓
남은문자 "23"으로 순열만들기
↓
2단계: "2"를 고정
↓
남은문자 "3"으로 순열만들기
↓
결과 합치기: "1" + ("2" + "3")
Step 3: 코드 설계
모듈화:
/**
* 입력: 문자열 s
* 출력: 가능한 모든 순열의 배열
* 예) 입력: "12" -> 출력: ["12", "21"]
*/
function permute(s) {
// 구현
}
Step 4: 코드 구현
function permute(s) {
if (s.length <= 1) {
return [s];
}
let arr = [];
for (let i = 0; i < s.length; i++) {
let char = s[i];
let remaining = s.slice(0, i) + s.slice(i + 1);
// 재귀처리
for (let perm of permute(remaining)) {
// 데이터 통합
arr.push(char + perm);
}
}
return arr;
}
console.log(permute('12'));
문제 설명
순열 생성 문제: 주어진 문자열의 모든 가능한 순열을 생성하는 프로그램을 작성
📝 제약조건
💡 예시
문제 해결 과정
Step 1: 문제 이해하기
작은 예시로 풀어보기:
Step 2: 접근 방법
문제의 일반화 규칙 찾기:
약식 알고리즘 표:
Step 3: 코드 설계
모듈화:
Step 4: 코드 구현