20161209


*이문제는 dovelet 에 있는 알고리즘 문제입니다.

 

음표/coci note 

프로그램 명: coci_note

 

제한시간: 1 초

C 장조의 음계는 8 개로 나타내어진다(c d e f g a h C). 이를 1 에서 숫자 8 로 약속을 한다.

1 에서 8 까지의 수가 임의의 순서로 한 번 나오는 수열이 주어질 때 이 수열이 오름차순(ascending)인지 내림차순(descending)인지 아니면 섞여(mix) 있는지 를 알아내는 문제이다.

입력

1 에서 8 까지의 수가 임의의 순서로 한 번 나타난다.

출력

ascending , descending , mixed 중 하나를 출력한다.

입출력 예

입력

1 2 3 4 5 6 7 8

출력

ascending

입력

8 7 6 5 4 3 2 1

출력

descending

입력

8 1 7 2 6 3 5 4

출력

mixed
출처: coci 2009/2010 contest1 1/6

 

 

 


 


제 풀이



1) 풀이

import java.io.PrintStream;
import java.util.Scanner;

public class Main {
 
 Scanner sc = new Scanner(System.in);
 PrintStream p = System.out;
 
 int [] input = new int[8];
 int ascending = 0;
 int descending = 0;
 String result = "";
 
 public static void main(String[] args)
 {
  
  Main ma = new Main();
     for(int i =0; i<8; i++)
     {
      ma.input(i);
     }
     ma.result();
 }
 
 void input(int i) {
  input[i] = sc.nextInt(); 
 }
 
 void result(){
  for(int a = 0; a < input.length-1; a++)
  {
   if(input[a] < input[a+1]) ascending = 1;
   else descending = 1;
  }
  int temp = ascending-descending;
  
  if(temp == 0) result = "mixed";
  else if (temp == 1) result = "ascending";
  else result = "descending";
  
  System.out.println(result);
 }
}




* 개인적인 풀이 내용입니다. 정해진 정답은 없습니다.


   입력한 8개의 값을 오름차순 과 내림차순 그 이외 경우 'Mixed' 를 구별하는 문제 입니다. 

   2층 문제는 If (조건문)으로만 해결하는게 좋긴 하지만 너무 for 문을 쓰고 싶게 만드는 문제 였습니다.

   저는 for 문을 이용해서 오름차순 1개 내림차순 1개 변수를 만들어줘서 발생할때 1을 입력해주고

   마지막에 연산한 결과로 3가지 경우를 판단하는 코드를 작성했습니다.

  다른 분들 code 를 보면

   if( 1번 값 < 2번값 && 2번값 < 3번값 ....) 반복해서 if, else if, else 로 for(반복문) 없이 푼 분들도 있었습니다.

   계속 반복해서 비교 해줘야 한다는 생각에 and 연산자(&&)를 생각 못 했던 것 같네요.

  

+ Recent posts