뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

if문과 for문 문제
Algorithm & Data Structure/문제 풀이

if문과 for문 문제

2020. 8. 23. 21:26
반응형

# 10171번, 고양이

public class Main {
    public static void main(String[] args) {
        System.out.println("\\    /\\");
        System.out.println(" )  ( ')");
        System.out.println("(  /  )");
        System.out.println(" \\(__)|");
    }
}

개념 : \를 기능없는 문자로 쓰기 위해서는 앞에 \를 한개 더 붙여줘야한다.

 

# 2753번, 윤년을 판별하는 문제

윤년윤년의 조건은 4의 배수이면서 100의 배수는 아니거나 400의 배수인 년이다.

윤년일 경우, 1을 아니면 0을 출력하는 코드.

 

 

 

 

 

 

 

# 14681번 , 사분면 고르기

1. 사용자의 입력을 받기위해서는

a. import java.util.Scanner;

b. Scanner 객체 = new Scanner(System.in);

c. 객체 선언 = 스캐너객체.nextInt/nextLine()/next();

>>프로그램이 동작하면 사용자가 수를 입력하는 시점은 c이다. 

2. 사분면에서 입력된 숫자에 맞는 결과를 출력하기 위해서는

a. 여러 경우가 있으므로 if문 이용해야함.

b. 기본 조건을 충족한 후 사분면을 고를수 있기 때문에 if문 안에 if문 형식으로 적어야함.

 

 

 

 

 

이렇게 해도 프로그램은 동작되지만 백준알고리즘에선 런타임에러로 뜬다. 한참을 고쳐봤는데도 안되서 결국 서칭을 해보니 훨씬 간단한 코드가 있었다..

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    	Scanner num = new Scanner(System.in);
        int x = num.nextInt();
        int y = num.nextInt();
        
        if (x>0) {
        	if (y>0)
            	System.out.println(1);
            else if (y<0)
            	System.out.println(4);
        }
        else if (x<0) {
        	if (y>0)
            	System.out.println(2);
            else if (y<0)
            	System.out.println(3);
        }
    }
}

문제에 나와있는 x,y의 기본조건까지 if문으로 쓸필요가 없었다.. 그리고 if-else문을 잘 활용하면 더 간단한 if-else문으로 쓸수 있다. 마지막으로 스캐너의 객체는 하나만 생성해줘도 된다.

많은 걸 알고가게 된 문제였다.

 

# 2884번, 알람 시계

import java.util.Scanner;
public class alarm {
	public static void main(String[] args) {
		Scanner num = new Scanner(System.in);
		
		int H = num.nextInt();	//시
		int M = num.nextInt();	//분
		if (M<45) {	//분이 45분보다 작으면 60-(45-M)이므로 15+M을 M에 넣어주고,H에도 변화가 생김.
			M =15+M;
			if (H==0)	//0시이면 23시로.
				H=23;
			else	//그 외의 시이면 1시간을 빼주면된다.
				H-=1;
		}
		else	//분이 45분보다 크면, 분에서 45분을 빼주면 끝.
			M-=45;				
		
		System.out.println(H+" "+M);	//출력
	}
}

처음에 문제를 봤을 떄는 어렵게 느껴졌지만 경우의 수를 생각해보고 따로 정리를 해준 후에 코드를 적으려고 하니 훨씬 쉽게 느껴졌다!

 

# 2439번, 별 찍기-2

사실 더 어려운 문제도 풀어봤음에도 누구나 한번씩 해본 별 찍기 문제를 제대로 풀어본 적이 없었는데 이 문제를 풀면서 정확히 알고 가게 되었다!

num=5라고 가정하면,

1. 입력한 수만큼 반복하는 for문과 띄어쓰기하는 for문과 별을 줄에 맞춰 찍는 for문, 총 세 반복문이 필요하다.

a. 한 줄 씩 내려가는 for문안에 

b. 1씩 줄어드는 띄어쓰기 for문 + 1씩 커지는 별찍는 for문이 들어가야한다.

2. 한 줄에 출력되는 띄어쓰기수+별갯수= 5와 같아야한다.

a. 1씩 줄어드는 for문은 for(int j=num-i-1;j>0;j--) 

*주의*

j=num-i로 해주게되면 띄어쓰기가 한칸이 더 찍히게 된다.

b. 1씩 커지는 for문은 for(int k=0;k<=i;k++)

k<=num 으로 해주게되면 별이 모든 줄에 5개씩 찍히게된다.

 

# 10871번, X보다 작은 수

1. 수열 개수 N과 기준이 될 숫자 X를 입력받고

2. 반복문을 돌리면서 N개만큼 입력해주고 바로 X보다 작은 수는 화면에 출력하도록 한다.

3. " "로 구분이 되도록 뒤에 붙여주고 출력한다.

반응형
저작자표시 (새창열림)

'Algorithm & Data Structure > 문제 풀이' 카테고리의 다른 글

[10817번] 세 수  (0) 2020.08.29
[10039번]평균 점수 (Java)  (0) 2020.08.27
[5543번] 상근날드  (0) 2020.08.27
[1110번] 더하기 사이클  (0) 2020.08.25
[10951번] EOF 개념  (0) 2020.08.25
    'Algorithm & Data Structure/문제 풀이' 카테고리의 다른 글
    • [10039번]평균 점수 (Java)
    • [5543번] 상근날드
    • [1110번] 더하기 사이클
    • [10951번] EOF 개념
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바