SCPC 삼성전자 프로그래밍 경진대회 증강현실 배달 안경
by 효기’s
SCPC 삼성전자 프로그래밍 경진대회 문제 1번 "증강현실 배달 안경" 문제를 풀었습니다.
풀이과정이 틀렸을 수 도있고 대회에 직접적으로 참여한게 아니라서 코드 결과는 확인할 수 없지만
제가 풀었던 풀이과정을 공개하겠습니다.
※ SCPC 사이트에서 문제 공개는 하지않는것을 의무로 한다고해서 배포는 하지 않았습니다.
문제풀이 규칙 정리
1. 테스트케이스 출력 양식을 사용하여 4개의 케이스를 출력한다.
2. 정수형 변수 N, A, B 를 선언한다.
N은 사과의 총 개수,
A는 A바구니에 들어갈수 있는 총 사과개수,
B는 B바구니에 들어갈 수 있는 총 사과 개수이다.
3. 최소값 생성 (변수 A와 B를 비교해서 최소값을 출력하는 코드)
4. switch 문으로 각각의 case1,2,3,4를 구현한다.
5. switch 0 => 사과의 총개수와 최소값을 나눈 나머지가 비교할 대상인 A 개수보다 작아야한다.
이런 경우에서 나누기했을때 몫을 -1하여 나온값이 B의 사과개수 Bnum이 되고
Bnum값을 몫으로 하고 같은 조건으로 나누기한 나머지가 A의 num이 되며
Anum에 A를 나누기를 한 값이 최종 Anum의 값이 된다.
Bnum과 Anum의 합이 결과값의 출력이 되는것이다.
6. switch 1 A와 B가 바뀌어 있는경우는 N과 low의 나머지가 0인경우이므로 몫이 Anum이 되어 출력하면 된다.
7. switch 2 이 경우는 switch0과 같은 케이스인데 다만 A와 B가 바뀌었을 경우이다.
코드는 같으며 Anum과 Bnum의 위치만 바꿔주면 된다.
8. switch 3 N, A, B가 모두 같은 값일 경우는 조건을 N과 A가 같은 경우로 두고
num값에 N과 A를 나눈 몫을 결과값으로 주도록 했다. else에는 B와 나눈 몫을 반환하면된다.
package Samsung;
import java.util.Scanner;
class Solution {
static int Answer;
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt(); // 테스트케이스 개수 출력
for (int test_case = 0; test_case < T; test_case++) {
int N = Integer.parseInt(sc.next()); // 사과의 총개수
int A = Integer.parseInt(sc.next()); // A 바구니에 들어갈 수 있는 총 개수
int B = Integer.parseInt(sc.next()); // B 바구니에 들어갈 수 있는 총 개수
// 최소값 생성
int low = 0;
if (A < B) {
low = A;
} else {
low = B;
}
switch (test_case) {
////// case 1번 //////
case 0:
if ((N % low) < A) {
int Bnum = ((N / low) - 1);
int Anum = N - (low * Bnum); // 나머지값
// Anum 개수 구하는방법
if ((Anum % A) == 0) {
Anum = Anum / A; // Anum깂
Answer = Bnum + Anum; // 결과값 출력
}
}
break;
case 1:
////// case 2번 //////
if ((N % low) == 0) {
int Anum = N / low;
Answer = Anum;
}
break;
case 2:
////// case 3번 //////
if ((N % low) < B) {
int Anum = ((N / low) - 1); // 1
int Bnum = N - (low * Anum);
// Bnum 개수 구하는 방법
if ((Bnum % B) == 0) {
Bnum = Bnum / B;
Answer = Anum + Bnum;
}
}
break;
case 3:
////// case 4번 //////
if (N == A) {
int num = (N / A);
Answer = num;
} else {
int num = (N / B);
Answer = num;
}
break;
}
System.out.println("Case #" + (test_case + 1));
System.out.println(Answer);
}
}
}
결과값
제가 코딩하면서 생각나는 반례는 생각나는대로 적용한거 같은데 틀린부분도 있을 수 있으니 잘 확인하셔야 합니다.
'Algoritum' 카테고리의 다른 글
JAVA Queue Stack Hash (2) | 2023.07.25 |
---|---|
JAVA 이진탐색트리 AVL 자료구조 (4) | 2023.07.24 |
JAVA Linkedlist 그림으로 원리 이해하기 (25) | 2023.07.21 |
JAVA Linked List (29) | 2023.07.19 |
JAVA 시간복잡도와 정렬 출력프로그램 (22) | 2023.07.17 |
블로그의 정보
감성 개발자 효기
효기’s