【Java 알고리즘 수행③】 분기 처리 ~FizzBuzz와 윤년~
FizzBuzz
분기 처리의 명문, FizzBuzz
1~입력된 값까지의 수열로, 하기 조건에 따라 출력을 할 수 있다고 하는 것
(실무에서는 확실하지 않은 요건입니다만, 렛츠 알고리즘!)
사고 방식으로서는 매우 간단하고, 배수이면 즉 그 수로 나눌 수 있다는 것이기 때문에
3의 배수라면, 3으로 나눈 때의 나머지가 0이면 된다고 합니다.
algo.java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
//iは1からスタートして、入力値まで繰り返し処理を行う
for(int i = 1; i <= number; i++){
if(i % 15 == 0){
System.out.println("FizzBuzz");
}else if (i % 3 == 0){
System.out.println("Fizz");
}else if (i % 5 == 0){
System.out.println("Buzz");
}else{
System.out.println(i);
}
}
}
}
질리지 않을 것이며 해설 할 정도가 아니지만,
개인적으로 갱신문에 수열의 수를 제어시키는 것으로, 비교적 깨끗하게 한 것이 아닐까 생각하고 있습니다. (어느 아마추어 도어를 받아 들여주세요)
初期化文 → 条件文 → 繰り返し処理 → 更新文
라고 하는 Java의 반복 문법을 사용하면 정리해 가는 것이 편리하네요. . !i를 1부터 시작시켜 조건분을
i <= 入力値
로 하면 i만으로 갈 수 있었네요 땀(@ 후지타 노조무 씨, 지적 해 주셔서 감사합니다!)
사고방식으로는 아래의 이미지와 같은 조건분기를 else-if문을 사용하여 표현했습니다.
3에서도 5에서도 깨지는 것 = 15의 배수이므로, 이것을 최초의 조건식에 가져오지 않으면 기대대로 갈 수 없기 때문에 주의입니다.
윤년
입력된 해가 윤년인지 판정하라고 하는 것
윤년의 조건은 아래와 같습니다만, 죄송합니다 여기까지는 구구했습니다. .
위의 조건이 갖추면 이제 무적이다! 그리고 상태를 타고있는 그대로 쓴 코드가 여기
algo.java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
if(year % 4 == 0){
if (year % 100 == 0 ){
if (year % 400 == 0){
System.out.println("閏年です");
}else{
System.out.println("閏年ではありません");
}
}else{
System.out.println("閏年です");
}
}else{
System.out.println("閏年ではありません");
}
}
}
무심하고 조건에 따라 if문을 나눈 결과 이런 식으로 되어 버렸습니다. .
이것이 중첩 코드라는 아무도 행복하지 않은 코드입니다.
무철포에 쓰는 것으로 어떻게 추워져 버리는지 알았더니, 이것을 개선하기 위해 추가된 else-if문을 사용해 봅시다.
중첩 개선하기
algo.java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
if(year % 4 != 0){
System.out.println("閏年ではありません");
}else if (year % 100 != 0 ){
System.out.println("閏年です");
}else if (year % 400 == 0){
System.out.println("閏年です");
}else{
System.out.println("閏年ではありません");
}
}
}
먼저 4로 나누지 않으면 그대로 평년 판정합니다.
4로 나누어져도 100으로 나누지 않으면 윤년 판정.
4 100 400으로 나누어진 경우는 윤년 판정.
4 또한 100으로 나누어도 400으로 나누지 않으면 평년 판정.
라고 하는 흐름으로 논리도 코드의 외관도 상당히 깨끗이 합니다.
배운 것
역시 우선은 움직이는 코드를 써보고, 거기에서 더 깨끗이 쓸 수 없는 것인가? 라는 사고 흐름은 나쁘지 않다. .
라고 생각하면서도, 자신의 첫 손이 매번 너무 밀어도 조금 스마트하게 할 수 없는 것이라고도 생각해 버리는군요 땀
계속 노력해 갑니다!
Reference
이 문제에 관하여(【Java 알고리즘 수행③】 분기 처리 ~FizzBuzz와 윤년~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kotaito/items/a307eb40e75243cadf17텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)