뭉
노재능 록리형 개발자
뭉
전체 방문자
오늘
어제
  • 분류 전체보기 (27)
    • Java (18)
      • Grammer (14)
      • Problem Solving (4)
    • JavaScript (0)
      • Grammer (0)
      • jQuery (0)
    • Spring (0)
    • DB (9)
      • SQL (6)
      • JPA (3)
    • Storage (0)
    • ETC (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
뭉
Java/Problem Solving

BOJ 1110번 - 더하기 사이클

BOJ 1110번 -  더하기 사이클
Java/Problem Solving

BOJ 1110번 - 더하기 사이클

2022. 6. 12. 02:45

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

 

1110번: 더하기 사이클

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

www.acmicpc.net

import java.util.Scanner;

public class Main {
	private static int newNum(int num) {
		int x = num % 10;      //1의 자리
		int y = num / 10;      //1의 자리 제거(10의 자리)
		int z = (y + x) % 10;  //더한 값의 1의 자리
		
		return (x * 10) + z;
	}
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int firstNum = num;
		int count = 0;
		
		do {
			num = newNum(num);
			count++;
		}while(num != firstNum);
		
		System.out.println(count);
	}
}

이 문제를 읽었을 때 난 두 가지를 간과했다.

 

그 중 하나는 자릿수를 구하는 방법이다.

처음에는 valueOf로 문자열로 만든 뒤 charAt 메서드를 통해 자릿값을 구하려고 했다. 그러다보니 코드는 엄청나게 길어지고 어느덧 떠오른게 저 방법이다. 모듈러 연산과 나눗셈으로 아주 쉽게 자릿수를 구했다.

 

두번째로는 새로운 수를 구하는 로직의 모듈화다.

해당 로직을 모듈화로 구했다 가정하고 문제를 풀었다면 좀 더 쉽게 접근이 가능했을 것이다.

 

덧붙여 처음에는 while(true)와 같이 무한루프를 돌면서 탈출조건일 때 break하도록 만들었다.

비교하는 두 값이 맨 처음에는 같기 때문이었다. 이에 따라 if문이 맘에 안들어 어떻게든 제거하려했고 그래서 do~while을 사용했다.

 

참고로 여기에서 더 빠른 로직을 원한다면 Scanner 대신 BufferedReader를 sout 대신 PrintWriter를 사용하면 된다.

'Java > Problem Solving' 카테고리의 다른 글

BOJ 1316번 - 그룹 단어 체커  (4) 2022.06.19
BOJ 4673번 - 셀프넘버  (0) 2022.06.14
BOJ 2577번 - 숫자의 개수  (0) 2022.06.12
    'Java/Problem Solving' 카테고리의 다른 글
    • BOJ 1316번 - 그룹 단어 체커
    • BOJ 4673번 - 셀프넘버
    • BOJ 2577번 - 숫자의 개수
    뭉
    뭉
    노재능 록리형 개발자

    티스토리툴바

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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