에러 발생 상화

(1) use로 Database 변경하였을때.

mysql> use kdhong_db

[MySql] ERROR 1044 (42000): Access denied for user 'user'@'localhost' to database 'userdb'

 

(2) MySQL의 ROOT계정(관리자계정)으로 아이디 생성 후 로그인 하였을때.

mysql> mysql -ulucky -p1234 lucky_db

[MySql] ERROR 1044 (42000): Access denied for user 'lucky'@'localhost' to database 'lucky_db'

 

※로그인 하는 방법 :> mysql -u아이디 -p비밀번호 데이터베이스명

 

해결방법

$ mysql -uroot -p1234

 

mysql> grant all privileges on userdb.* to 'lucky'@'localhost' identified by '패스워드' with grant option;

Query OK, 0 rows affected (0.16 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.11 sec)

구성환경
OS : Linux CentOS7
DBMS : MariaDB 10.x

 

이번 포스팅은 CentOS에서 설치한 MariaDB를 외부에서 접속 하기위해 방화벽 세팅 방법에 대해서 포스팅 하겠습니다.

현재 열려 있는 포트확인
[root@localhost ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1097/rpcbind        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      26130/sshd          
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1521/cupsd          
tcp6       0      0 :::3306                 :::*                    LISTEN      74557/mysqld        
tcp6       0      0 :::111                  :::*                    LISTEN      1097/rpcbind        
tcp6       0      0 :::80                   :::*                    LISTEN      74627/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      26130/sshd          
tcp6       0      0 ::1:631                 :::*                    LISTEN      1521/cupsd

 

netstat를 통해 현재 리눅스에서 열려 있는 포트를 확인 합니다. netstat에서 -tnlp옵션을 주었는데요.

다음과 같은 의미를 가지고 있습니다.

  • t : TCP 프로토콜을 사용하는 포트
  • n : 10진수 숫자로 표기
  • l : 열린포트(Listening) 상태인 포트
  • p : 상세 정보 표기

만약 netstat가 실행 되지 않는다면, yum install net-tools로 설치 해주면 됩니다.


방화벽에 포트 설정

 

방화벽 관리를 위해서는 firewall-cmd 명령어를 사용하는데요. 간단하게 방화벽 관련 정보 조회, 추가, 삭제 등 방화벽 관리를 위한 명령어를 정리해 보았습니다. 이제 아래 정리해 놓은 명령어를 통해서 MariaDB(MySQL)포트인 3306포트를 등록 해주도록 하겠습니다.

 

# 기본 존(zone) 조회
[root@localhost ~]# firewall-cmd --get-default-zone

# 활성화된 존(zone) 조회
[root@localhost ~]# firewall-cmd --get-active-zones

#사용 가능한 모든 방화벽 포트 설정 조회
[root@localhost ~]# firewall-cmd --list-all

#public 존에 속한 사용 가능한 모든 방화벽 포트 설정 조회
[root@localhost ~]# firewall-cmd --zone=public --list-all

# 방화벽 포트 추가( 옵션 추가 )
# --zone=[존이름] : --zone 옵션이 없으면 Default Zone에 저장 다른 존에 저장하려면 옵션 입력
# --permanent : 방화벽 설정 내용 재부팅 후 적용
[root@localhost ~]# firewall-cmd --add-port=[포트번호]/[프로토콜]
또는
[root@localhost ~]# firewall-cmd --add-service=[서비스명]

# 방화벽 포트 삭제
# --zone=[존이름] : --zone 옵션이 없으면 Default Zone에 저장 다른 존에 저장하려면 옵션 입력
# --permanent : 방화벽 설정 내용 재부팅 후 적용
[root@localhost ~]# firewall-cmd --remove-port=[포트번호]/[프로토콜]
또는
[root@localhost ~]# firewall-cmd --remove-service=[서비스명]

# 방화벽 실행 여부 확인
[root@localhost ~]# firewall-cmd --state

# 방화벽 재시작
[root@localhost ~]# firewall-cmd --reload

 

방화벽에 3306 포트를 열어 주기 위해서 "firewall-cmd --add-port=[포트번호]/[프로토콜]" 또는 "firewall-cmd --add-service=[서비스명]" 사용 하면 되는데요. 저는 위에 설명 한것과 같이 "--zone"과 "--permanent" 옵션을 사용하여 포트를 추가 해 주겠습니다.

[root@localhost ~]# firewall-cmd --zone=public --permanent --add-port=3306/tcp
또는
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-service=mysql
[root@localhost ~]# firewall-cmd --reload

 

"--permanent"옵셥을 주었기 때문에 "firewall-cmd --reload"를 사용하여 방화벽을 재시작 해주어야 설정한 내용이 적용 됩니다. "--permanent"사용하지 않는다면 방화벽 재시작 없이 바로 설정내용이 적용 됩니다.

"--zone"옵션을 사용하여 존(zone)은 public으로 설정 됩니다. "--zone"을 사용하지 않는다면 Default값으로 지정된 존(zone)으로 저장됩니다. Default Zone 확인은 "firewall-cmd --get-default-zone" 확인 할 수 있습니다.

이제 설정 내용이 잘 적용 되었는지 확인 해 보겠습니다. 확인 하기 위해서는 "firewall-cmd --list-all" 명령어를 통해 확인 가능합니다. 특정 존(zone)의 설정 내용을 확인 하기 위해서는 "firewall-cmd --zone=public --list-all"와 같이 "--zone=[존이름]"옵션을 사용해 줍니다.

[root@localhost ~]# firewall-cmd --list-all
또는
[root@localhost ~]# firewall-cmd --zone=public --list-all

 

firewall-cmd --zone=public --permanent --add-service=mysql 추가 결과
firewall-cmd --zone=public --permanent --add-port=3306/tcp 추가 결과

방화벽에 포트를 추가 했을때 위와 같이 "--add-port=3306/tcp"와 "--add-service=mysql" 결과 값이 조금은 다를 수 있습니다. service로 추가 할 것인지 이니면 포트로 직접 추가 할 것 인지 인데요. 이 부분은 상황에 따라 편하신 방법으로 하시면 됩니다. 이제 windows 환경에서 mariaDB에 접속 해 보도록 하겠습니다. 저는 DB 관리 툴 인 HeidiSQL을 사용하였는데요. 꼭 HeidiSQL이 아니더라도 DBeaver 등 다양한 무료 툴이 있으니 편하신 툴로 사용 하시면 됩니다.

 

DB 접속을 위해 호스트명/IP, 사용자, 암호, 포트 정보를 입력 해 줍니다. 그리고 열기를 클릭 해 줍니다.

MariaDB 접속 성공

MariaDB Server에 접속 성공 하게 된다면 위와 같은 결과를 볼 수 있습니다. 하지만 포트가 열려 있지 않거나 잘 못 열려 있다면 접속이 되지 않고 아래와 같은 결과가 나오는데요.

MariaDB 접속 실패

이럴 경우에는 위에 정리된 명령어로 포트 및 존(Zone)을 확인 하시고 다시 추가 및 방화벽 재시작을 해보시면 될 꺼 같습니다. 이상 포스팅을 마치겠습니다. 긴글 읽어 주셔서 감사합니다^^

Webassembly 환경 구성하기

 

Webassembly 환경은 Window, Linux, MacOS 등 다양한 환경에서 구성 가능하다.

이번 포스팅에서는 Window 환경 기준으로 Webassembly 환경을 구성해볼 예정입니다.

Webassembly 환경을 구성하기 위해서는 몇 가지 프로그램을 설치 해야 합니다.

  1. 파이썬(Python) 3.x 설치 ( 다운로드 : www.python.org
  2. git 설치 ( 다운로드 : git-scm.com )
  3. Emscripten SDK(emsdk) 설치

C, C++, Rust 등에서 만들어진 코드를 Webassembly와 javascript로 컴파일 하기 위해서는 Emscripten을 설치 해야합니다.

Emscripten를 설치 하기 전에 먼저 3.x이상 버전의 파이썬과 git을 설치 해줍니다.

파이썬과 git은 공식사이트에 가면 설치 파일이 있으니 다운로드 받아 설치 해 줍니다.

Emscripten 설치하기 위해 아래와 같이 git을 통해 설치파일을 받아 설치 합니다.

 

1. Emscripten 설치하기
git clone https://github.com/emscripten-core/emsdk.git

emscripten 설치파일 받기

 

emsdk를 받았으면 다운 받은 경로로 이동해 아래와 같이 설치 합니다. 

# emsdk 설치
> emsdk.bat install [버전]

# emsdk 최신버전 설치
> emsdk.bat install latest

emsdk 설치 화면


2. Emscripten 활성화 및 환경변수 설정

 

emsdk 설치가 완료 되었으면, 아래와 같이 emsdk를 활성화하고 환경변수를 설정 하면 Webassembly 컴파일을 위한 준비가 완료 됩니다.

# emsdk 활성화
> emsdk.bat activate [버전]

# emsdk 최신버전 활성화
> emsdk.bat activate latest

# emsdk 환경변수 설정
> emsdk_env.bat

 

emsdk 활성화
emsdk 환경변수 설정


3. Emscripten 버전 정보 확인

 

emsdk가 정상 설치 되었는지 확인하기 위해 버전 확인을 해봅시다. 정상적으로 설치가 완료 되었다면 emsdk 버전 정보를 확인 할 수 있습니다.

# emsdk 버전 확인
> emcc --version
> em++ --version

 

emcc --version을 통해 버전 정보 확인
em++ --version을 통해 버전 정보를 확인

 

Windows 운영체제 환경에서 Webassembly 컴파일을 위해 환경 구성을 해봤습니다.

여기까지 지루한 포스팅 읽어주셔서 감사합니다!! ㅎㅎ

구성환경
OS : Linux CentOS7
DBMS : MariaDB 10.x

 

1. yum update

 

MariaDB를 설치하기 전에 먼저 update를 해줍시다. yum을 update하기 위해서는 관리자(root)로 로그인 하던가 아니면 sudo를 사용하여 아래와 같이 update를 해줍니다.

#관리자(root) 일 때
[root@localhost ~]# yum update

#일반 계정 일 때
[lucky@localhost ~]$ sudo yum update

 

"yum update"를 하면 아래와 같이 update 목록과 설치 진행 하겠냐고 물어 보는데요. "Y"를 입력하고 Enter를 눌러 주시면 됩니다.


2. mariaDB 설치

 

yum update가 완료 되면 다음으로 MariaDB를 설치를 시작 하면 되는데요. 아래와 같이 입력해 주세요.

#관리자(root) 일 때
[root@localhost ~]# yum -y install mariadb-server

#일반 계정 일 때
[lucky@localhost ~]$ sudo yum -y install mariadb-server

 

잠시 기다리면 아래와 같이 "Complete"가 나오면 설치가 완료!!

 

 

자 이제 설치가 다 되었으니 한번 잘 설치되었는지 확인 해볼까요? 아래 명령어를 입력 후 아래와 같은 결과가 나온다면 잘 설치가 됬다고 보시면 됩니다.

[root@localhost ~]# rpm -qa | grep -i mariadb

 


3. mariaDB 실행

 

mariaDB를 설치 했으시 이제 실행 해 봐요. 간단히 실행, 상태확인, 정지, 재시작 명령어를 정리 해봤습니다.

# mariaDB 실행
[root@localhost ~]# systemctl start mariadb

# mariaDB 상태 확인
[root@localhost ~]# systemctl status mariadb

# mariaDB 재시작
[root@localhost ~]# systemctl restart mariadb

# mariaDB 정지
[root@localhost ~]# systemctl stop mariadb

 

mariaDB를 시작하고, 잘 시작됬는지 확인하려면 "systemctl status mariadb"또는 "ps -ef | grep mysqld"를 통해 잘 실행 됬는지 확인 가능합니다.

systemctl status mariadb 실행 결과
ps -ef ❘ grep mysqld 실행 결과


4. mariaDB 계정 생성 및 권한 부여

 

mariaDB가 정상 적으로 잘 실행 됬으니 이제 계정 생성 및 권한 부여를 해보겠습니다. 계정 생성하기 위해서는 mariaDB의 root 계정으로 로그인 해야 되는데요. mariaDB를 처음 설치 했을때 root 계정의 패스워드가 없으니 먼저 root계정의 패스워드 부터 초기화 하도록 하겠습니다.

# mariaDB root 패스워드 변경하기
[root@localhost ~]# mysqladmin -uroot password

mariaDB root 패스워드 변경

 

mariaDB의 root 계정의 패스워드를 입력해주고, root계정으로 mariaDB를 접속해을 해주세요.

# mariaDB root계정 접속
# mariaDB -u[계정명] -p [사용 할 스키마(DB명)]
[root@localhost ~]# mariaDB -uroot -p
Enter password: 패스워드 입력

 

mariaDB 접속

 

초기화 시킨 패스워드를 사용하여, root계정으로 mariaDB에 접속 성공되면 위와같이 결과가 나오게 됩니다. mariaDB를 접속하기 위해서 "mariaDB -uroot -p"접속해도 되지만 "mysql -uroot -p"로 입력해도 마찬가지로 접속이 가능합니다. 간단히 이유를 설명하면 mariaDB는 MySQL로부터 뿌리가 시작 되었는데요. mariaDB와 MySQL은 기능상 약간의 차이점이 있을 수 있지만 대부분 명령어 등 대부분 호환성을 가지고 있습니다. 덕분에 mariaDB를 사용할때 mysql 명령어를 사용해도 대부분 실행 되고 있습니다.

자! 이제 계정을 생성하고 권한을 부여 해보도록 하겠습니다.

위와 같이 순서대로 진행 하면 계정 생성 및 권한을 부여 할 수 있습니다.

# 스키마 선택(DB 선택)
MariaDB [mysql]> use mysql;

# 계정 생성
# CREATE USER '[계정명]'@'[HOST주소(IP주소)]' IDENTIFIED BY '패스워드';
MariaDB [mysql]> CREATE USER 'lucky'@'localhost' IDENTIFIED BY 'qwer1234!';

# 권한 부여
# GRANT [권한] PRIVILEGES ON '[DB명]'.'[테이블명]' TO '[계정명]'@'[HOST주소(IP주소)]';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON 'mysql'.* TO 'lucky'@'localhost';

# 추가 및 수정 사항 적용
MariaDB [mysql]> FLUSH PRIVILEGES;

 

"CREATE USER '[계정명]'@'[HOST주소(IP주소)]' IDENTIFIED BY '패스워드'"에서 "HOST주소(IP주소)"는 DB서버로 접속 하려는 사용자의 IP주소를 말합니다.

 

예를 들어 회사 컴퓨터(1.1.1.1)과 개인 컴퓨터(2.2.2.2)가 있다고 가정 합니다. CREATE USER 'lucky'@'1.1.1.1'로 계정을 생성 합니다. 그러면 회사 컴퓨터(1.1.1.1)에서는 lucky계정으로 DB에 접속이 되지만, 개인 컴퓨터(2.2.2.2)에서는 lucky계정을 사용하여 접근이 불가능 합니다. 즉, 회사 컴퓨터(1.1.1.1) 외 다른 컴퓨터에서는 DB서버 접속이 불가능 합니다.

 

이제 계정과 권한이 잘 생성 되었는지 확인 해보겠습니다. 아래 쿼리를 사용하여 계정 및 권한 정보를 확인 해 보겠습니다.

# 계정 정보 확인
SELECT host, user, select_priv, insert_priv, update_priv, delete_priv from user;

# 권한 정보 확인
SELECT host, db, user, select_priv, insert_priv, update_priv, delete_priv from db;

 

계정 및 권한 정보 확인

 

MariaDB 설치 및 계정 생성에 대해서 포스팅 해봤습니다. 긴글 읽어주셔서 갑사합니다!! ㅎㅎ

소수(Prim Number)란?

 

소수(Prime Number)는 약수로 1과 자기 자신만을 약수로 가지는 정수입니다. 
예를 들어, 
8의 약수는 "1, 2, 4, 8" 입니다. 1과 8 이외에 2,4를 약수를 가지고 있어 8은 소수가 되지 않습니다.
11의 약수는 "1, 11"인데, 1과 11을 약수로 가지는데요. 즉, 1과 자기 자신만을 가지게 되므로 11은 소수 입니다.


소수(Prim Number) 구하기 풀이1

 

2~1000000의 범위에서 소수를 구해 봤습니다.(1은 소수가 아니므로 제외)
반복문(for문)을 두번 사용하여 1을 제외한 단순히 범위에 따라서 모든 수를 나누어 주었습니다.

8 => 2,3,4,5,6,7,8 / 2로 나누어 짐 소수 X (break; 실행)
9 => 2,3,4,5,6,7,8,9 / 3으로 나누어짐 소수 X (break; 실행)
10 => 2,3,4,5,6,7,8,9,10 / 2으로 나누어짐 소수 X (break; 실행)
11 => 2,3,4,5,6,7,8,9,10,11 / 어떤수로도 나누어 지지 않음 O(소수)

풀이 1은 위와 같이 2~1000000까지 모두 수행하여 소수를 구했습니다. 
실행 결과를 보면 127.133초 / 나누기 횟수는 37567404990번 했다는 것을 알 수 있습니다.
풀이 2에서 이제 성능을 개선 해보도록 하겠습니다.

 

소스코드
public class PrimNumber1 {
	public static void main(String[] args) {
		long count = 0L;				// 나눗셈 횟수
		
		double beforeTime = System.currentTimeMillis();
		
		for(int i = 2; i <= 1000000; i++) { 
			int j;
			for(j=2; j<=i; j++) {
				count++;
				if(i%j == 0)
					break;
			}
			if(i==j)
				System.out.println(i);
		}
		
		double afterTime = System.currentTimeMillis();
		double secDiffTime = (afterTime - beforeTime) / 1000;
		
		System.out.println("실행 시간(m) : " + secDiffTime);
		System.out.println("나누기 횟수 : " + count);
	}
}

 

실행 결과
2
3
5
7
11
...
999959
999961
999979
999983
실행 시간(m) : 127.133
나누기 횟수 : 37567404990

소수(Prim Number) 구하기 풀이2

 

풀이 2에서는  11.382초 / 나누기 횟수 3084786715번 했다는 것을 확인 했습니다.
풀이 1알고리즘 보다는 조금더 성능이 좋아 졌습니다.
풀이 2에서는 2는 소수임을 인지하고 배열에 2를 prime배열에 저장하고 
2를 제외한 나머지 짝수는 전부 2로 나누어 지기때문에 소수가 될 수 없음을 알고, 
홀 수만을 소수를 구해야 되는 범위로 잡고, 홀수 임에도 기존에 찾은 수소들과 다시 나누어 
나누어 지지 않으면 소수로 판별 하여 구하였습니다.
정리하면,

1. prime 배열에 소수 2를 저장
2. prime 배열에 저장되어 있는 기존에 구했던 소수를 이용해 정수를 나누어 준다.
  - i = 3 / prime => {2} : i / prime[0](3/2) 는 나누어 지지 않는다 => 소수O => prime 배열에 저장
  - i = 4 / prime => {2,3} : i / prime[0](4/2) 는 나누어 진다 => 소수X
  - i = 5 / prime => {2,3} : i / prime[0](5/2) 는 나누어 지지 않는다 => 소수O => prime 배열에 저장

위와 같은 방법으로 성능을 개선 하였습니다. 하지만, 알고리즘 성능은 풀이1보다 더 좋아졌지만
배열을 사용하기 때문에 메모리(자원)를 더 많이 사용 하는 것을 알 수 있습니다.
풀이 3에서는 에라토스테네스의 접근 방법을 사용하여 성능과 자원사용을 더 개선 해보겠습니다.

 

소스코드
public class PrimNumber2 {
	public static void main(String[] args) {
		long count = 0L;				// 나눗셈의 횟수
		int ptr = 0;					// 찾은 소수의 개수
		int[] prime = new int[500000];	// 소수를 저장
		
		prime[ptr++] = 2;			// 2는 소수이다
		
		double beforeTime = System.currentTimeMillis();
		
		// 홀수만 검사 -> 짝수는 2를 제외 전부 소수 이기때문(2로나눠짐)
		for(int i = 3; i<=1000000; i+=2) {
			int j;
			// 기존에 찾은 소수로 나누어 나눠지지 않으면 소수
			for(j=1; j < ptr; j++) {
				count++;
				if( (i%prime[j]) == 0)
					break;
			}
			if( ptr == j )
				prime[ptr++] = i;
		}
		
		for(int i = 0; i < ptr; i++)
			System.out.println(prime[i]);
		
		double afterTime = System.currentTimeMillis();
		double secDiffTime = (afterTime - beforeTime) / 1000;
		
		System.out.println("실행 시간(m) : " + secDiffTime);
		System.out.println("나누기 횟수 : " + count);
	}
}

 

실행결과
2
3
5
7
11
...
999959
999961
999979
999983
실행 시간(m) : 11.382
나누기 횟수 : 3084786715

소수(Prim Number) 구하기 풀이3

풀이 3에서는  1.008초 / 나누기 횟수 67740404번 했다는 것을 확인 했습니다.
풀이 3에서는 에라토스테네스의 접근 방법을 사용하여 소수를 구하였습니다.
에라토스테네스의 접근 방법 외에도 에라토스테네스의 체를 사용하여 구하는 방법도 있습니다.

※ 에라토스테네스의 접근방법
자연수 N이 소수이기 위한 필요충분 조건은 N이 N의 제곱근보다 크지 않은 어떤 소수로도 나눠지지 않는다.
수가 수를 나누면 몫이 발생하게 되는데 몫과 나누는 수, 둘 중 하나는 반드시 N의 제곱근 이하이기 때문이다.

에라토스테네스의 접근방법 이론은 위와 같지만 간단히 정리하면, 
2부터 N의 제곱근 까지 나누어 떨어지는 수가 없다면 소수라고 생각하시면 됩니다.

위와 같이 제곱근(루트) 값을 알 수 있는데요.

아래와 같은 방법으로 "2~N의 제곱근"의 범위로 잡고 나누어 소수를 판별 할 수 있습니다.

i = 2, j=2, j <= 1.xxx  →  j <= 1.xxx (2 < 1.xxx) 거짓  →  소수O
i = 3, j=2, j <= 1.xxx  →  j <= 1.xxx (2 < 1.xxx) 거짓  →  소수O
i = 4, j=2, j <= 2  → j <= 2 (2 <= 2) 참 → 4%2==0 참 → 소수X
i = 5, j=2, j <= 2.xxx → j <= 2.xxx(2<=2.xxx) 참 → 5%2==0 거짓 → 소수O
i = 6, j=2, j <= 2.xxx → j <= 2.xxx(2<=2.xxx) 참 → 6%2==0 참 → 소수X

 

소스코드
public class PrimNumber3 {
	public static void main(String[] args) {
		int count = 0;
		
		double beforeTime = System.currentTimeMillis();
		
		for(int i = 2; i<=1000000; i++) {
			boolean isPrim = true;
			for(int j=2; j<=Math.sqrt(i); j++) {
				count++;
				if( (i%j)==0 ) {
					isPrim = false;
					break;
				}
			}
			
			if( isPrim )
				System.out.println(i);
			
		}
		
		double afterTime = System.currentTimeMillis();
		double secDiffTime = (afterTime - beforeTime) / 1000;
		
		System.out.println("실행 시간(m) : " + secDiffTime);
		System.out.println("나누기 횟수 : " + count);
	}
}

 

실행결과
2
3
5
7
11
...
999959
999961
999979
999983
실행 시간(m) : 1.008
나누기 횟수 : 67740404

 

문제

N개의 숫자가 공백 없이 써 있다. 이숫자를 모두 합해 출력하는 프로그램 작성

 

입력

1번째 줄에 숫자의 개수 N(1 <= N <= 100), 2번째 줄에 숫자 N개가 공백 없이 주어진다

 

출력

입력으로 주어진 숫자 N개의 합을 출력

코드 작성
import java.util.Scanner;

public class MainClass {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int n = scan.nextInt(); // 숫자의 개수
		String inputNumber = scan.next(); // N개의 숫자
		
		char [] numbers = inputNumber.toCharArray();
		int result = 0;
		
		for(char number : numbers) {
			String temp = String.valueOf(number);
			result += Integer.parseInt(temp);
		}	
		
		System.out.println(result);
	}
}

 

풀이(설명)

1. 입력을 받기위해 Scanner 클래스를 사용하여 "숫자의 개수, 공백 없이 주어진 N개의 숫자"를 입력을 받음.

2. N개의 숫자(inputNumber)를 String으로 받아 toCharArray() 함수를 사용하여 char 배열 numbers에 저장.

3.  numbers 배열에 저장된 값들을 가져와 result에 중복 더하여 숫자의 합을 구함.

 

해당 문제는 배열과 형변환만 잘 활용하면 쉽게 풀수 있는 문제 입니다. 즉, String에 저장된 값을 char 배열 형태로 저장한 다음 배열에 있는 값들을 반복문을 사용하여 더해주면 되는데 이때 합을 구하기 위해 "String -> int"로 형변환을 한 다음 더해주는 방식으로 쉽게 풀 수 있습니다.

+ Recent posts