개발기록

https://swexpertacademy.com/main/talk/solvingClub/problemBoxDetail.do?solveclubId=AYUu1hG6O44DFARs&probBoxId=AYUu1hG6O48DFARs&leftPage=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

[문제]

하나의 자연수를 입력 받아 각 자릿수의 합을 계산하는 프로그램을 작성하라.

 

 

[접근]

N을 문자열로 입력받고 문자열을 배열로 변환한 후 하나씩 더해줌

 

[시간소요 요소]

파이썬과 달리 문자열을 하나씩 읽으려면 배열로 변환해주어야함.

이 과정에서 두가지가 필요하였는데

- 새로운 배열을 생성하고 문자열을 문자마다 나누어 배열에 할당 -> String형변수.split()

- String형 변수를 Int로 형변환(형변환이 불가하여 함수 사용) -> Integer.parseInt(String형변수)

※ toCharArray()함수를 이용해 char형 배열로 바꾸어준 후 사용할 수도 있다. 하지만 char과 int연산시 '0'을 빼주어야 한다.

 

 

[결과]

class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        String N = sc.next();
         
        String[] NArray = N.split("");
        int answer = 0;
        for (String e : NArray) {
            answer += Integer.parseInt(e);
        }
        System.out.println(answer);
    }
}

[다른풀이]

문자열을 받아서 int로 변환하여 푸는 방법 외에 다른 풀이를 보던 중 

N을 받은 후 10으로 나눠주며 나머지를 더해주고 이후 N/10을 실행하여 자릿수를 하나씩 낮추는 방법을 보았다.

class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int answer = 0;
		
		while(N != 0) {
			answer += N%10;
			N = N/10;
		}
		System.out.println(answer);
	}
}

 

toCharrArray()함수를 이용한 문제풀이

public class codingtest {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String N = sc.next();
		
		char[] charArr = N.toCharArray();
		int sum = 0;
		for (char e: charArr) {
			e = (char) (e-'0');
			sum += e;
		}
		System.out.println(sum);
	}

}

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

[SWEA] D1 1936 1대1 가위바위보(JAVA)  (0) 2023.01.07
profile

개발기록

@HO0214

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!