-
https://www.acmicpc.net/problem/2920
2920번: 음계
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8
www.acmicpc.net
아래 코드 처럼 말도 안되는 코드를 작성해서는 안된다.
for(int i=0; i<8;i++) { if(input[i]==a[i]) { System.out.println( "ascending"); }else if(input[i]==b[i]) { System.out.println( "descending"); }else { System.out.println( "mixed"); }}
나는 a[]={1,2,3,4,5,6,7,8} 이라고 하고, b[]={8,7,6,5,4,3,2,1}이라고 했다
예를 들어서 입력값이 81726354 라면,
input={8,1,7,2,6,3,5,4}
1)
i=0일때,
b[0]=input[0] 이므로, descending 을 출력한다.
2)
i=1일때, input[1]!=a[1] , input[1]!=b[1] 이므로 mixed가 출력될 것이고....
이런식인거다..
만약 System.out.println 아래 줄에 break 를 걸어주면, input[0] 만 a[0], b[0]이랑 비교하고 끝내는거고,
continue를 걸어주면, i=1로 이동해서, System.out.println 하는 거니깐 의미 없음
최종으로 맞은 코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int input[] = new int [8]; String s = br.readLine(); StringTokenizer st = new StringTokenizer(s , " "); for(int i=0; i<8;i++){ input[i]=Integer.parseInt(st.nextToken()); } String result = "mixed"; for(int i=0; i<7;i++) { if( input[i+1]==input[i]+1) { result = "ascending"; }else if( input[i+1]==input[i]-1) { result = "descending"; }else { result = "mixed"; break; }} System.out.println(result); } }
참고 자료 : https://oper6210.tistory.com/23
[JAVA 자바] 백준 2920번 음계
이 문제는 spilt를 사용해 입력한 숫자를 구분해줘도 되고 int형 배열에 바로 입력 값을 저장 해도 되는 문제이다. 첫 번째는 int형 배열에 입력 값을 저장 하여 값을 구하는 방법이다. 두 번째는 spi
oper6210.tistory.com
** 생각해 볼 부분
위의 코드처럼 System.out.println을 맨 마지막에 하지 않고, 각 경우 마다 하면
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int input[] = new int [8]; String s = br.readLine(); StringTokenizer st = new StringTokenizer(s , " "); for(int i=0; i<8;i++){ input[i]=Integer.parseInt(st.nextToken()); } for(int i=0; i<7;i++) { if( input[i+1]==input[i]+1) { System.out.println("ascending"); }else if( input[i+1]==input[i]-1) { System.out.println("descending"); }else { System.out.println("mixed"); break; }} } }
오류가 난다.
생각해볼 부분
'백준 > 구현' 카테고리의 다른 글
1924번 2007년 (0) 2021.10.18 10817 세 수 (0) 2021.10.18 11721 열 개씩 끊어 출력하기 (0) 2021.10.18 7568 덩치 (0) 2021.10.18 10773 제로 (0) 2021.10.18