코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘/백준

2875번 : 대회 or 인턴

2022. 7. 6. 09:42

문제

 

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); int m = sc.nextInt(); int k = sc.nextInt();

        for(int i=0;i<k;i++) {
            if(n>=2*m) n-=1;
            else m-=1;
        }

        if(n>=2*m) System.out.println(m);
        else System.out.println(n/2);
    }
}

 

 

해결방법

여자  남자  인턴
 N       M       K

인턴 수만큼 빼기
1. if(N>=2*M) N에서 1 빼기
2. else M에서 1 빼기
3. 1, 2번을 인턴 수만큼 반복

최대 팀 수 출력
1. if(N>=2*M) 출력 M
2. else 출력 N/2

위의 방식대로 코드를 구현하였다.

 

1번 틀리고 맞췄는데 처음에 아래와 같이 잘못 생각하였다.

여자  남자  인턴
 N       M       K

인턴 수만큼 빼기
1. if(N>=2*M) N에서 K 빼기
2. else M에서 K 빼기

최대 팀 수 출력
1. if(N>=2*M) 출력 M
2. else 출력 N/2

5 3 2가 들어온다면 1이 출력 => 오답, 최대 팀 수는 2

인턴 수를 뺄 때 입력이  5 3 2 인 경우 N=5 M=1이 된다. 최대 팀의 개수를 가지려면 N=4 M=2로 N과 M에서 각각 1씩 빼야 한다. 그러므로 위의 방식은 잘못된 방식이다.

'알고리즘 > 백준' 카테고리의 다른 글

16435번 : 스네이크버드  (0) 2022.07.06
11651번 : 좌표 정렬하기 2  (0) 2022.07.06
1343번 : 폴리오미노  (0) 2022.07.04
2847번 : 게임을 만든 동준이  (0) 2022.06.30
1449번 : 수리공 항승  (0) 2022.06.29
    '알고리즘/백준' 카테고리의 다른 글
    • 16435번 : 스네이크버드
    • 11651번 : 좌표 정렬하기 2
    • 1343번 : 폴리오미노
    • 2847번 : 게임을 만든 동준이
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바