250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 파티션 크기 조정
- 백준13458
- N과M
- 볼륨 만들기
- 주사위굴리기2
- 완전탐색
- java
- 재귀함수
- 삼성역테
- 백준
- 알고리즘
- 백준15652
- 전화번호속의암호
- 완탐
- 코테
- 자바 코테
- Bfs와DFS
- 알고리즘개념
- 자바
- 순열
- 중복순열
- 중복조합
- D드라이브생성
- 23288
- 백준2251
- 정보처리기사
- BFS
- 에라토스테네스의채
- 정올 1620
- 코테준비
Archives
- Today
- Total
뚱땅뚱땅
[문제] 정올 1620 전화번호 속의 암호 본문
728x90
# 링크: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=893&sca=99&sfl=wr_hit&stx=1620
JUNGOL
www.jungol.co.kr
틀렸었던 조건들
1. 전화번호 형식이 "-"로 끝날 수 있음
예) "0-6-6-6-5-121-1-5854-"
2. 모든 더미에 대하여 4자리 이상인지 확인 필요
배운 것들
1. StringTokenizer로 delimter 설정 가능
최종 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class J1620_전화번호속의암호 {
static String s; // 100자 내의 스트링
static int p; // 1~9 수
static int m; // 더미 번호
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
s = st.nextToken();
p = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
//1. s 의 더미 파악
String dummy = getDummy(s, m);
//2. 처리조건 안맞는거 처리
if(checkAllDummy() == false || dummy.equals("false") || !(p>=1 && p<=9)) {
System.out.println("INPUT ERROR!");
return;
}
//3. 자리에 숫자 더하기
System.out.println(plus(dummy, p));
}
// 더미 중 4자리 넘어가는게 하나라도 있는지 체크
static boolean checkAllDummy() {
StringTokenizer st = new StringTokenizer(s, "-");
int sLen = st.countTokens();
String dummy = "";
for(int i=0;i<sLen;i++) {
dummy = st.nextToken();
if(dummy.length() > 4) return false;
}
return true;
}
// dummy 각 자리에 p만큼 더하기
static String plus(String dummy, int p) {
String ans = "";
dummy = paddingZero(dummy); // 0 패딩시키기
for(int i=0;i<dummy.length();i++) {
int num = dummy.charAt(i) - '0';
num += p;
// 2자리 넘어가면 일의자리만 남기기
if(num > 9) {
num = num % 10;
}
ans += (num+"");
}
return ans;
}
// 4자리가 아닌 더미에 대하여 0으로 패딩시키기
static String paddingZero(String str) {
int len = str.length();
if(len < 4) {
int zero = 4 - len;
String z = "";
for(int i=0;i<zero;i++) {
z += "0";
}
str = z + str;
}
return str;
}
// s의 dummyNumber 번째 더미 구하기
static String getDummy(String s, int dummyNumber) {
StringTokenizer st = new StringTokenizer(s, "-");
int sLen = st.countTokens();
// 전화번호가 "-"로 끝나는 경우 예외처리
if(dummyNumber == sLen+1 && s.charAt(s.length()-1) == '-') {
return "";
}
if(dummyNumber > sLen) return "false";
String dummy = "";
for(int i=1;i<=dummyNumber;i++) {
dummy = st.nextToken();
}
return dummy;
}
}
728x90
'알고리즘 > PRO 시험 대비' 카테고리의 다른 글
자바 문자열 유용한 함수 정리 (0) | 2023.05.09 |
---|---|
[개념] 소수 판별: 에라토스테네스의 채 (0) | 2023.05.08 |
코테 자바 입출력 기본 준비 (0) | 2023.05.08 |
Comments