1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

 

<내 코드>

 

E, S, M = map(int, input().split())

e, s, m = 1, 1, 1
year = 0
while True:
    year += 1

    if e == E and s == S and m == M:
        print(year)
        break

    e += 1
    s += 1
    m += 1

    if e == 16:
        e = 1
    if s == 29:
        s = 1
    if m == 20:
        m = 1
반응형

 

 

1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

 

 

<내 코드>

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
		int E = sc.nextInt();
		int S = sc.nextInt();
		int M = sc.nextInt();
		int e=1, s=1, m=1;
		
		for(int i=1;;i++) {
			if(e == E && s == S && m == M) {
				System.out.println(i);
				break;
			}
			
			e += 1;
			s += 1;
			m += 1;
			if(e == 16) e=1;
			if(s == 29) s=1;
			if(m == 20) m=1;
		}
		
	}
}
반응형

 

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

 

<내 코드>

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
        int sum = 0;
        int[] nums = new int[9];
        boolean ck = false;
        
        // 입력
        Scanner sc = new Scanner(System.in);
        for(int i=0; i<9; i++) {
        	int n = sc.nextInt();
        	nums[i] = n;
        	sum += n;
        }
        
        for(int i=0; i < 9; i++) {
        	for(int j=0; j < 9; j++) {
        		if (ck) break;
        		if(i==j) continue;
        		
        		if(sum - nums[i] - nums[j] == 100) {
        			nums[i] = 0;
        			nums[j] = 0;
        			ck = true;
        			break;
        		}
        	}
        }
        
        Arrays.sort(nums);
        for(int i=0; i < 9; i++) {
        	if (nums[i] != 0) {
        		System.out.println(nums[i]);
        	}
        }

	}
}

 

반응형

 

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

 

 

<내 코드>

 

import copy
heights = [int(input()) for _ in range(9)]

for i in range(8):
    tmp = copy.deepcopy(heights)
    tmp[i] = 0
    for j in range(i+1, 9):
        tmp_num = tmp[j]
        tmp[j] = 0
        if(sum(tmp) == 100):
            ans = tmp
            break
        tmp[j] = tmp_num
ans.sort()
for i in ans:
    if i != 0:
        print(i)

 

얇은 복사와 깊은 복사의 차이를 알 수 있는 문제였다. 일반 copy는 외부적으로는 다른 객체가 생성되나 내부 요소에는 결국 같은 객체를 가리키고 있다는 것을 알았다. 이것을 방지하기 위해 deepcopy를 해주면 외, 내부 모두 다른 새로운 객체로 만들 수 있다.

반응형

+ Recent posts