9_yoon
개발저장소
9_yoon
전체 방문자
오늘
어제
  • 분류 전체보기 (101)
    • 알고리즘 (52)
      • BJ (40)
      • 프로그래머스 (0)
      • SWEA (10)
      • JO (2)
    • 이론 공부 (7)
      • 네트워크 (2)
      • 알고리즘 (2)
      • Java (1)
      • Web (1)
      • 기타 (1)
    • 개발 공부 (35)
      • Project (1)
      • JavaScript (1)
      • Typescript (1)
      • Spring (12)
      • Java (2)
      • Next JS (7)
      • React (3)
      • Vue (1)
      • Web (5)
      • 기타 (2)
    • 기타 (7)
      • SSAFY (7)
      • 일상 (0)

인기 글

태그

  • 싸피7기
  • 싸피
  • SWEA
  • 노마드코더
  • React
  • 김영한 스프링
  • NextJS
  • SSAFY
  • 스프링
  • 백준

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
9_yoon
알고리즘/BJ

[BJ] 백준 1759 암호만들기 (JAVA)

[BJ] 백준 1759 암호만들기 (JAVA)
알고리즘/BJ

[BJ] 백준 1759 암호만들기 (JAVA)

2022. 2. 22. 20:52
728x90
반응형

문제

https://www.acmicpc.net/problem/1759

풀이 방법

골드 문제 치고는 간단한 듯 싶었다. 더 효율적인 방법이 있겠지만 나는 제일 먼저 떠오르는 방법으로 구현했다.
1. 주어진 문자들 중에서 L개를 뽑는 조합을 먼저 구하고
2. 완성된 조합을 가능성이 있는지 판단하는 순서로 구현했다.

 

제출 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class BJ_1759_암호만들기 {
public static int L, C;
public static char[]inputs;
public static char[] pwd;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
L = Integer.parseInt(st.nextToken()); //만들어야하는 암호의 자릿수
C = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
inputs = new char[C]; //입력받은 알파벳을 저장
pwd = new char[L];
for (int i = 0; i < C; i++) {
inputs[i] = st.nextToken().charAt(0);
}
Arrays.sort(inputs); //순서대로 만들어야하기 때문에 미리 정렬하기
combination(0, 0); //조합 시작
}
private static void combination(int cnt, int start) {
if(cnt ==L) {
if(check(pwd)) { //조합이 완성되면 가능성있는지 확인
for (char c : pwd) { //가능성있으면 출력
System.out.print(c);
}
System.out.println();
};
return;
}
for (int i = start; i < C; i++) {
pwd[cnt] = inputs[i];
combination(cnt+1, i+1);
}
}
private static boolean check(char[] pwd) {
int j =0; //자음 개수
int m =0; //모음 개수
for (int i = 0; i < pwd.length; i++) {
//모음이면 m에 추가 자음이면 j변수에 추가
if( pwd[i] =='a' ||pwd[i] =='e'||pwd[i] =='i'||pwd[i] =='o'||pwd[i] =='u') m++;
else j++;
}
if(j >=2 && m>=1) return true; //모음이 1개이상 자음 2개 이상이면 true
else return false; //아니면 false
}
}

 

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'알고리즘 > BJ' 카테고리의 다른 글

[BJ] 백준 10026 적록색약 (JAVA)  (0) 2022.02.23
[BJ] 백준 2669 직사각형 네 개의 합집합의 면적구하기 (JAVA)  (0) 2022.02.22
[BJ] 백준 1260 DFS와 BFS (JAVA)  (0) 2022.02.21
[BJ] 백준 2477 참외밭 (JAVA)  (0) 2022.02.21
[BJ] 10157 자리배정 (JAVA)  (0) 2022.02.19
  • 문제
  • 풀이 방법
  •  
  • 제출 코드
'알고리즘/BJ' 카테고리의 다른 글
  • [BJ] 백준 10026 적록색약 (JAVA)
  • [BJ] 백준 2669 직사각형 네 개의 합집합의 면적구하기 (JAVA)
  • [BJ] 백준 1260 DFS와 BFS (JAVA)
  • [BJ] 백준 2477 참외밭 (JAVA)
9_yoon
9_yoon
배울게 넘쳐나는 개발 세상에서 묵묵히 걸어가며 지식을 쌓는 신입 개발자

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.