Algorithm

더하기 사이클 : 백준 1110번 - charAt, length()를 통한 문자열 재구성

2020. 6. 9. 00:49

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

 


 

덧셈을 통한 String의 결합

charAt() 메소드를 통한 String의 특정값 추출

length()를 통한 스트링 길이 구하기

 

위의 3가지를 이용해 String, int, char를 오가며 자료를 굴리는 연습이었다.

 


의외의 복병은 BufferedWriter 였는데...

지금까지 모든 문제는 StringBuffer 객체를 출력했기에 몰랐다.

BufferedWriter의 write 메소드의 경우 여러 타입의 파라메타를 받도록 오버로딩 되어있는데,

int 값을 넣을 경우 single character 를 write 한다. 

따라서 String 값으로 변환해줘야 한다.

 

지저분하고 복잡한 풀이결과이지만.. 

아직은 결과를 만들어내는 것에 집중하는 것이 더 나은 효율을 보이는 구간에 있다는 판단이다.


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            //최초로 주어진 숫자를 original에 보관한다
            String original = br.readLine();
            
            //몇 번 만에 original로 회귀하는지 셀 count 준비
            int count = 0;
            
            //1자리 숫자일 경우 앞에다 0을 추가해준다
            if(original.length()==1) original = "0" + original;
            
            //계속해서 변화하는 값은 target에서 처리한다
            String target = original;
            
            //original과 target이 일치할 때까지 반복한다.
            while(true) {
                
                //1자리 숫자가 될 경우 앞에 0을 추가한 뒤 작업을 시작한다.
                if(target.length()==1) target = "0" + target;
                
                //2자리 숫자인 target의 10의자리 수와 1의자리 수를 더한 뒤 result에 String으로 저장한다
                String result = Integer.parseInt(target.charAt(target.length()-2)+"") 
                        + Integer.parseInt((target.charAt(target.length()-1)+"")) + "";
                //횟수를 센다
                count++;
                
                //original과 비교할 타겟을, (덧셈을 진행한 숫자의 1의자리수+덧셈 결과의 1의자리수)의 String 결합으로 만든다.
                target = ""+target.charAt(target.length()-1) + result.charAt(result.length()-1);
                
                //만들어진 target이 original과 같으면 중단한다.
                if(target.equals(original)) break;
            }
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
            bw.write(count+"");
            bw.flush();
            bw.close();
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Colored by Color Scripter
cs

 

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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

'Algorithm' 카테고리의 다른 글

K번째 수 (프로그래머스, Java, Level1)  (0) 2020.07.07
Selection Sort 구현해보기  (0) 2020.07.06
N 찍기 : 백준 2741번 - Scanner&System.out VS BufferedReader&BufferedWriter 메모리, 소요시간 비교  (0) 2020.06.06
빠른 A+B : 백준 15552번 - BufferedReader/Writer를 활용한 빠른 입출력  (0) 2020.06.06
가끔씩 한 문제씩 알고리즘 문제풀이를 해보려고 한다  (2) 2020.05.28
'Algorithm' 카테고리의 다른 글
  • K번째 수 (프로그래머스, Java, Level1)
  • Selection Sort 구현해보기
  • N 찍기 : 백준 2741번 - Scanner&System.out VS BufferedReader&BufferedWriter 메모리, 소요시간 비교
  • 빠른 A+B : 백준 15552번 - BufferedReader/Writer를 활용한 빠른 입출력
리차드
리차드
화음을 좋아하는 리차드🎶리차드 님의 블로그입니다.
리차드
화음을 좋아하는 리차드🎶
리차드
전체
오늘
어제
  • 전체 게시글 보기 (200)
    • Portfolio (0)
    • Thoughts & Records (17)
    • 우아한테크코스 4기 (43)
    • Java & Spring (36)
    • JPA & QueryDSL (2)
    • Database (18)
    • Server & Infra (21)
    • Network (0)
    • Algorithm (11)
    • IDE (12)
    • HTML & CSS (4)
    • JavaScript (11)
    • Life (13)

블로그 메뉴

  • Github

공지사항

인기 글

태그

  • 알고리즘
  • IntelliJ
  • 리차드
  • oracle
  • 화음을 좋아하는
  • 오라클
  • 스프링
  • javascript
  • 우아한테크코스
  • EC2
  • 스프링부트
  • git
  • java
  • 우테코
  • Spring
  • 자바
  • SQL
  • 웹 백엔드 4기
  • aws
  • 자바스크립트

최근 댓글

최근 글

hELLO · Designed By 정상우.
리차드
더하기 사이클 : 백준 1110번 - charAt, length()를 통한 문자열 재구성
상단으로

티스토리툴바

개인정보

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

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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