문제

이 문제의 포인트는 모음('a','e','i','o','u')이 나왔을때 그다음이 'p'과 그 다음다음이 똑같은 모음이여야한다는 것이다. 뒤에 똑같은 모음이 온다는것을 못보고 코드를 구현하고 실패하자 문제를 다시 읽고 수정하였다. (안좋은 습관 또!!)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
 
public class Main{
    public static boolean flag=false;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine();
        String result="";
        for(int i=0;i<str.length();i++) {
            if((str.charAt(i)=='a'&&str.charAt(i+1)=='p')||(str.charAt(i)=='e'&&str.charAt(i+1)=='p')||(str.charAt(i)=='i'&&str.charAt(i+1)=='p')||(str.charAt(i)=='o'&&str.charAt(i+1)=='p')||(str.charAt(i)=='u'&&str.charAt(i+1)=='p')) {
                result+=str.charAt(i);
                i=i+2;
                flag=true;
            }
            if(flag==false)
            {
                result+=str.charAt(i);
            }
            else if(flag==true)
            {
                flag=false;
            }
        }
        System.out.println(result);
    }
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

https://www.acmicpc.net/problem/2954

 

2954번: 창영이의 일기장

문제 창영이는 매일 밤 하루동안 일어난 일을 일기장에 남긴다. 일기장을 쓰면서 영어 공부도 같이 하기 위해서 영어로 일기를 쓴다. 또, 남들이 자신의 일기장을 보는 것을 막기 위해서 모음('a','e','i','o','u')의 다음에 'p'를 하나 쓰고,  그 모음을 하나 더 쓴다. 예를 들어, "kemija" 는 "kepemipijapa"가 되고, "paprika"는 "papapripikapa"가 된다. 창영이가 일기장에 작성한 문장이 하나 주어졌을 때

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

수학숙제  (0) 2019.07.13
퍼거슨과 사과  (0) 2019.07.08
찍기  (0) 2019.07.08
2009년  (0) 2019.07.08
캔디구매  (0) 2019.07.08

문제

이 문제의 포인트는 String 비교이다. 3명의 학생으로 고정이 되어있기 때문에 나는 3명의 답 배열을 저장하여 각각 비교하면서 최대값을 가지고 그것이 모두 같으면 모두 출력하고 한명만 같으면 한명만 출력하는 식으로 코드를 구현하였다. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import java.util.*;
 
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number=sc.nextInt();
        String str=sc.next();
        char [] arr1 = {'A','B','C'};
        char [] arr2= {'B','A','B','C'};
        char [] arr3= {'C','C','A','A','B','B'};
        int [] people= new int [3];
        
        int index1=0;
        int count1=0;
        for(int i=0;i<number;i++)
        {
            if(str.charAt(i)==arr1[index1])
            {
                count1++;
            }
            index1++;
            if(index1>=3)
            {
                index1=0;
            }
        }
        int index2=0;
        int count2=0;
        for(int i=0;i<number;i++)
        {
            if(str.charAt(i)==arr2[index2])
            {
                count2++;
            }
            index2++;
            if(index2>=4)
            {
                index2=0;
            }
        }
        int index3=0;
        int count3=0;
        for(int i=0;i<number;i++)
        {
            if(str.charAt(i)==arr3[index3])
            {
                count3++;
            }
            index3++;
            if(index3>=6)
            {
                index3=0;
            }
        }
        
        people[0]=count1;
        people[1]=count2;
        people[2]=count3;
        
        int max=Integer.MIN_VALUE;
        
        for(int i=0;i<3;i++)
        {
            if(max<people[i])
            {
                max=people[i];
            }
        }
        System.out.println(max);
        if(max==people[0])
        {
            System.out.println("Adrian");
        }
        if(max==people[1])
        {
            System.out.println("Bruno");
        }
        if(max==people[2]) {
            System.out.println("Goran");
        }
    }
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

https://www.acmicpc.net/problem/2966

 

2966번: 찍기

문제 상근이, 창영이, 현진이는 역사와 전통을 자랑하는 Sogang ACM-ICPC Team에 가입하려고 한다. 하지만, 가입하려고 하는 모든 지원자는 C언어 필기시험을 통과해야 한다. 이들은 C언어를 할 줄 모른다. 따라서, 필기시험을 모두 찍으려고 한다. 상근이는 A, B, C, A, B, C, A, B, C, A, B, C, ...와 같이 찍어야 통과할 수 있다고 생각한다.  하지만, 창영이는 B, A, B, C, B, A, B, C, B, A, B

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

퍼거슨과 사과  (0) 2019.07.08
창영이의 일기장  (0) 2019.07.08
2009년  (0) 2019.07.08
캔디구매  (0) 2019.07.08
달팽이는 올라가고싶다  (0) 2019.07.08

문제 

위 문제는 (해당 달의 전달까자의 모든 날+ 해당 달의 일)%%7을 해주는 것이다. 

주의해야할점은  처음에 1월 1일이 Thursday라는것!, 주석을 달은부분도 꼭 필요 없으면 런타임 에러 걸림 이유는 배열 범위 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.*;
 
public class Main{
    public static String [] Days= {"Thursday","Friday","Saturday","Sunday","Monday","Tuesday","Wednesday"};
    public static int [] month = {31,28,31,30,31,30,31,31,30,31,30,31};
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        int Day=sc.nextInt();
        int Month=sc.nextInt();
        
        int temp=Month-1;
        int sum=0;
        for(int i=0;i<temp;i++)
        {
            sum+=month[i];
        }
        sum+=Day;
        
        int result=sum%7;
        if(result==0//이부분이 없으면 Runtime Error
        {
            result=7;
        }
        System.out.println(Days[result-1]);
        
        
    }
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

https://www.acmicpc.net/problem/2948

 

2948번: 2009년

문제 2009년 날짜가 주어졌을 때, 무슨 요일인지 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 D와 M이 주어진다. M월 D일이다. 출력 2009년 M월 D일의 요일을 영어로 출력한다. 출력은 다음 중 하나이다. "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday". 예제 입력 1 복사 1 1 예제 출력 1 복사 Thursday...

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

창영이의 일기장  (0) 2019.07.08
찍기  (0) 2019.07.08
캔디구매  (0) 2019.07.08
달팽이는 올라가고싶다  (0) 2019.07.08
유학금지  (0) 2019.07.08

문제

이문제의 포인트는 생각보다 간단하다. 반올림의 여부판단이다. 또한 지패의 액면가는 항상 1, 10, 100, 1000이렇게 이루어 진다.

반올림 판단 여부는 아래의 코드에서 확인 가능하다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;
 
public class Main{
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        int number=sc.nextInt();
        int coin=sc.nextInt();
        int temp=(intMath.pow(10, coin);
        
        int x=(number/temp)*temp;
        
        if(number%temp>=temp/2//X의 반이 넘어갈때 
        {
            number=x+temp;
        }
        else //그렇지 않을때
        {
            number=x;
        }
        System.out.println(number);
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

https://www.acmicpc.net/problem/2909

 

2909번: 캔디 구매

문제 오늘은 화이트데이이다. 상근이는 여자친구를 위해서 사탕을 사려고 한다. 하지만, 상근이는 독특한 성격을 가지고 있어서, 특정 액면가의 지폐만 가지고 있는다. 또, 거스름든은 받지 않는다. 따라서, 사탕 가게의 사장과 상근이는 다음과 같은 합의를 했다. 상근이는 사장에게 자신이 가지고 있는 지폐의 액면가를 말해준다. 그럼 사장은 상근이가 지불할 수 있는 가장 가까운 금액으로 사탕의 가격을 반올림해준다. 예를 들어, 상근이가 가지고 있는 지폐의 액면가가

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

찍기  (0) 2019.07.08
2009년  (0) 2019.07.08
달팽이는 올라가고싶다  (0) 2019.07.08
유학금지  (0) 2019.07.08
파티가 끝나고 난 뒤  (0) 2019.07.08

문제

이 문제를 처음 봤을때 간단한 식이 생각 났다. (A-B)*day =V 이 식이 가장 먼저 생각이 났지만 예제들 대입할 시 정답이 안나오기 때문에 

보류하였다. 기본적으로 (올라감-> 내려감) 이것이 세트로 생각할 텐데 생각을 좀 바꿔서 (내려감 -> 올라감)으로 생각을 바꾸고 문제를 

접근하였다.

무조건 달팽이는 A만큼 높이를 올라갈것이다. 또한 (내려감->올라감)을 세트를 두었다고 (A-B)는 바뀌지 않는다. 시작점이 변경되는것!

위의 이러한 조건들을 판단하였을때 식을 도출해낼 수 있다.

1.  A+(A-B)*day=V  

2. (A-B)*day=V-A

3. day=(V-A)/(A-B)

하지만 여기서 멈추는 것이 아니라 하나의 조건을 더 생각을 해야한다. 정상에 올라간 후 미끄러지지 않는다는 조건이다.

이 조건은 만약 (V-A%A-B)!=0이면 +1을 해줌으로써 해결할 수 있다.

위의 조건을 생각하니 문제가 풀렸다. 식을 못구해서 시간이 좀 많이 걸렸다.(이런문제 좀더 연습 필요..)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
 
public class Main{
    public static boolean flag=false;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A=sc.nextInt();
        int B=sc.nextInt();
        int V=sc.nextInt();
        
        
        int result=0;
        int x=(V-A)/(A-B);
        if((V-A)%(A-B)!=0)
        {
            result+=1;
        }
        
        result=result+x+1;
        
        System.out.println(result);
        
    }
}
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

https://www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

2009년  (0) 2019.07.08
캔디구매  (0) 2019.07.08
유학금지  (0) 2019.07.08
파티가 끝나고 난 뒤  (0) 2019.07.08
슈퍼마리오문제  (0) 2019.07.08

문제

위의 문제또한 앞에서 다루었던 FBI와 비슷한 문제이다. 문제의 설명은 생략하겠다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.*;
 
public class Main{
    public static boolean flag=false;
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        char [] arr= {'C','A','M','B','R','I','D','G','E'};
        String str=sc.next();
        for(int i=0;i<str.length();i++)
        {
            for(int j=0;j<arr.length;j++)
            {
                if(str.charAt(i)==arr[j])
                {
                    flag=true;
                }
            }
            if(flag==true)
            {
                flag=false;
                continue;
            }
            else
            {
                System.out.print(str.charAt(i));
                flag=false;
            }
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

https://www.acmicpc.net/problem/2789

 

2789번: 유학 금지

문제 아주 멀리 떨어져 있는 작은 나라가 있다. 이 나라에서 가장 공부를 잘하는 학생들은 모두 다른 나라로 유학을 간다. 정부는 최고의 학생들이 자꾸 유학을 가는 이유를 찾으려고 했다. 하지만, 학생들의 이유가 모두 달랐기 때문에 정확한 이유를 찾을 수 없었다. 정부의 고위직은 뛰어난 학생들이 자꾸 유학을 가는 현상을 매우 불쾌해 했다. 가장 많은 학생들이 유학을 가는 대학교는 영국의 캠브리지 대학교이다. 정부는 인터넷 검열을 통해서 해외로 나가는 이메일

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

캔디구매  (0) 2019.07.08
달팽이는 올라가고싶다  (0) 2019.07.08
파티가 끝나고 난 뒤  (0) 2019.07.08
슈퍼마리오문제  (0) 2019.07.08
FBI  (0) 2019.07.08

문제

이문제는 다른 설명이 필요하지 않을것같다..

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.*;
 
public class Main{
    public static int [] arr;
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        int L=sc.nextInt();
        int M=sc.nextInt();
        arr=new int[5];
        int multiple=L*M;
        for(int i=0;i<5;i++)
        {
            arr[i]=sc.nextInt();
        }
        for(int i=0;i<5;i++)
        {
            if(i!=4)
            {
                System.out.print(arr[i]-multiple+" ");
            }
            else
            {
                System.out.println(arr[i]-multiple);
            }
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

https://www.acmicpc.net/problem/2845

 

2845번: 파티가 끝나고 난 뒤

문제 파티가 끝나고 나면, 사람들은 누가 파티에 왔는지와 얼마나 많은 사람들이 왔는지를 궁금해한다. 보통 파티는 매우 크게 열리기 때문에, 정확하게 몇 명이 참가했는지 알 수가 없다. 지난주 토요일에 상근이는 자신의 3학년 진학을 기념하면서 매우 성대한 파티를 열었다. 그리고, 상근이는 1m2당 몇 명의 사람이 있었는지 알고있다. 상근이의 파티는 정말 엄청난 규모였기 때문에, 대부분의 신문에도 기사가 실렸다. 상근이는 서로 다른 5개의 신문을 보면서 그

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

달팽이는 올라가고싶다  (0) 2019.07.08
유학금지  (0) 2019.07.08
슈퍼마리오문제  (0) 2019.07.08
FBI  (0) 2019.07.08
블라인드  (0) 2019.06.30

문제

이 문제는 언듯 보았을때 문제를 이해하는데는 어렵지 않은 문제였다. 차례대로 더하여 100에 가깝게 가면된다.

N번째 버섯을 먹었을 때와 N-1번째 버섯을 먹을때 값을 바교하여 후자가 더 크면 계속 더해주고 전자가 더 크면 멈춰주면 되는 문제이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
 
public class Main{
    public static int [] arr;
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        int sum=0;
        arr = new int [10];
        for(int i=0;i<10;i++)
        {
            arr[i]=sc.nextInt();
        }
        for(int i=0;i<10;i++)
        {
            if(Math.abs(sum+arr[i]-100)<=Math.abs(sum-100))
            {
                sum+=arr[i];
            }
            else
            {
                break;
            }
        }
        System.out.println(sum);
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

https://www.acmicpc.net/problem/2851

 

2851번: 슈퍼 마리오

문제 슈퍼 마리오 앞에 10개의 버섯이 일렬로 놓여져 있다. 이 버섯을 먹으면 점수를 받는다. 슈퍼 마리오는 버섯을 처음부터 나온 순서대로 집으려고 한다. 하지만, 모든 버섯을 집을 필요는 없고 중간에 중단할 수 있다. 중간에 버섯을 먹는 것을 중단했다면, 그 이후에 나온 버섯은 모두 먹을 수 없다. 따라서 첫 버섯을 먹지 않았다면, 그 이후 버섯도 모두 먹을 수 없다. 마리오는 받은 점수의 합을 최대한 100에 가깝게 만들려고 한다. 버섯의 점수가 주어

www.acmicpc.net

 

'알고리즘 > 문제' 카테고리의 다른 글

유학금지  (0) 2019.07.08
파티가 끝나고 난 뒤  (0) 2019.07.08
FBI  (0) 2019.07.08
블라인드  (0) 2019.06.30
블랙잭  (0) 2019.06.30

+ Recent posts