티스토리 뷰
문제풀이
암호 코드가 주어졌을 때 정상인지 아닌지를 판별하는 문제다.
암호 코드는 총 8개의 숫자로 이루어져 있고 앞 7자리는 상품 고유의 번호, 마지막 자리는 검증 코드를 나타낸다.
"홀수 자리의 합 * 3 + 짝수 자리의 합 + 검증 코드"를 계산하여 10으로 나누어 떨어진다면 그 암호 코드는 정상이다.
직사각형 배열에 암호코드 정보가 포함되어 전달되고 배열은 1, 0으로 이루어져 있다.
여기서 암호코드를 찾아서 판별하는 방법은 다음과 같다.
그림에서 보면 모든 숫자들이 1로 끝난다.
한 줄씩 입력받을 때마다 오른쪽 끝에서부터 확인해서 1을 찾고 거기서부터 56번째 전 숫자까지 자르면 그게 바로 암호 코드다.
같은 암호 코드가 여러 줄에 걸쳐 입력되므로 이미 암호를 찾은 상태라면 나머지는 검사하지 않아도 된다.
숫자에 매칭되는 암호 코드들을 code 배열에 저장해두었기 때문에 숫자로 바꿀 때는 그 암호 코드의 인덱스가 곧 숫자다.
그렇게 8자리를 숫자로 바꾼 후 "홀수 자리의 합 * 3 + 짝수 자리의 합 + 검증 코드"를 계산했을 때 10의 배수라면 각 자리수의 합을 리턴하고 그렇지 않으면 0을 리턴한다.
Java 코드
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA 1242] 암호코드 스캔 Java (0) | 2021.08.03 |
---|---|
[SWEA 1233] 사칙연산 유효성 검사 C++ (0) | 2021.08.02 |
[SWEA 1232] 사칙연산 C++ (0) | 2021.08.02 |
[SWEA 1231] 중위순회 C++/Java (0) | 2021.08.02 |
[SWEA 1238] Contact C++ (2) | 2021.07.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스택
- 알고리즘
- 위상 정렬
- 트리
- 자바
- Java
- Kotlin
- Two Pointer
- 정렬
- BFS
- SW Expert Academy
- 구현
- 그래프
- 이분 탐색
- 재귀
- 배열
- 큐
- SWEA
- programmers
- 문자열
- 백준
- 프로그래머스
- 분할 정복
- BOJ
- C++
- dfs
- algorithm
- 투 포인터
- 두 포인터
- 브루트포스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함