지구정복

[수학, 구현] 백준 - 문어 본문

데이터 엔지니어링 정복/Algorithm

[수학, 구현] 백준 - 문어

nooh._.jl 2021. 7. 18. 11:38
728x90
반응형

https://www.acmicpc.net/problem/21313

 

21313번: 문어

문어에게 여덟개의 팔이 있다는 사실은 잘 알려져 있다. 하지만 문어들이 자신의 팔들을 1번, 2번, 3번, ..., 8번이라고 부른다는 말은 오늘 처음 들었을 것이다! 단, 시계방향으로 오름차순이라던

www.acmicpc.net

-문제이해

처음에 뭔 소리인가 했는데 그림그리고나서 이해했다. 그리디 문제이길래 손잡고있는 문어들의 사전을 어떻게 찾지 하다가 그림그려보니깐 그냥 수학적으로 구현하면 되겠다 싶었다.

n이 짝수일 때는 그냥 1 2 1 2 반복,

n이 홀수일 때는 마지막에 3 추가 1 2 1 2 3 이런식

 

 

-자바

package greedy;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class BJ21313 {
	private static BufferedWriter bw = 
			new BufferedWriter( new OutputStreamWriter(System.out));
	private static int n;

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt( br.readLine() );
		String ans = "";
		
		if( n%2==0 ) 
			for( int i=0; i<n/2; i++ )
				ans += "1 2 ";
		else if( n%2==1 )
			for( int i=0; i<(n/2)+1; i++ )
				if( i==(n/2) ) ans += "3";
				else ans += "1 2 ";
		
		bw.write( ans + "\n" );
		bw.flush();
		bw.close();
		br.close();
	}
}

 

-파이썬

n = int(input())
ans = [1, 2] * (n//2) + ( [3] if n%2==1 else [] )
print( *ans )
728x90
반응형
Comments