Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- JavaScript
- Git
- jquery
- 방법
- 자바
- 넥사크로
- Eclipse
- 스프링
- mybatis
- aws
- GitHub
- 알고리즘
- Security
- 생성
- 오라클
- 코틀린
- 쿼리
- 프로그래머스
- Vue
- Spring
- JPA
- IntelliJ
- oracle
- Java
- db
- 함수
- 시큐리티
- kotlin
- error
- 에러
Archives
- Today
- Total
송민준의 개발노트
[프로그래머스] 단체사진 찍기 본문
https://programmers.co.kr/learn/courses/30/lessons/1835
코딩테스트 연습 - 단체사진 찍기
단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두
programmers.co.kr
모든 경우의 수를 체크해야 하는 문제.
결론은 dfs로 접근해서 풀면 된다.
잠깐 for문 8번 중첩할까도 생각했다.... 풀고 다른 사람풀이 보니 진짜 실행한 사람이 있다...ㅋㅋ
class Solution {
private String[] friends = {"A", "C", "F", "J", "M", "N", "R", "T"};
private int answer = 0;
public int solution(int n, String[] data) {
boolean[] visited = new boolean[8];
StringBuilder sb = new StringBuilder("");
dfs(data, visited, sb);
return answer;
}
public void dfs(String[] data, boolean[] visited, StringBuilder sb) {
if(sb.length() == 8) {
if(check(data, sb)) {
answer += 1;
}
return;
}
// 모든 케이스 탐색
for(int i = 0; i < friends.length; i++) {
// 탐색 안한 곳인 경우
if(!visited[i]) {
visited[i] = true;
StringBuilder nsb = new StringBuilder(sb);
nsb.append(friends[i]);
dfs(data, visited, nsb);
visited[i] = false;
}
}
}
// 케이스 일치 확인
public boolean check(String[] data, StringBuilder sb) {
for(String value : data) {
int targetIndex = sb.indexOf(String.valueOf(value.charAt(0)));
int compareIndex = sb.indexOf(String.valueOf(value.charAt(2)));
String co = String.valueOf(value.charAt(3));
String coValue = String.valueOf(value.charAt(4));
if(co.equals("=")) {
if(!(Math.abs(targetIndex - compareIndex) - 1 == Integer.parseInt(coValue))) return false;
} else if(co.equals(">")) {
if(!(Math.abs(targetIndex - compareIndex) - 1 > Integer.parseInt(coValue))) return false;
} else if(co.equals("<")) {
if(!(Math.abs(targetIndex - compareIndex) - 1 < Integer.parseInt(coValue))) return false;
}
}
return true;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 (0) | 2022.05.08 |
---|---|
[프로그래머스] 소수 만들기 (0) | 2022.05.02 |
[프로그래머스] 카카오프렌즈 컬러링북 (0) | 2022.04.30 |
[프로그래머스] 오픈채팅방 (0) | 2022.04.28 |
[프로그래머스] 더 맵게 (0) | 2022.04.25 |