데이터 엔지니어링 정복/Algorithm
[수학, 구현] 백준 - 문어
noohhee
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
반응형