혜랑's STORY

[BOJ_C] 2941번, 2884번 본문

2021 SISS 21기 활동/겨울방학 C

[BOJ_C] 2941번, 2884번

hyerang0125 2021. 1. 23. 17:07

#BOJ 2941번 : 크로아티아 알파벳

BOJ 2941번 문제

- 풀이

#include <stdio.h>

int main(){
    char str[101];
    int cnt = 0;

    scanf("%s", str);
    for(int i=0; str[i]; i++){
        if(str[i] == 'c')
            if(str[i+1] == '-' || str[i+1] == '=')
                i++;

        if(str[i] == 'd'){
            if(str[i+1] == '-')
                i++;
            else if(str[i+1] == 'z' && str[i+2] == '=')
                i += 2;
        }

        if(str[i] == 'l' || str[i] == 'n')
            if(str[i+1] == 'j')
                i++;

        if(str[i] == 's' || str[i] == 'z')
            if(str[i+1] == '=')
                i++;

        cnt++;
    }

    printf("%d", cnt);
}
  1. 입력받은 문자열의 i번째 알파벳이 "c, d, l, n, s, z"인가를 검사하기
  2. 만약, 1번에 해당되는 알파벳일 경우 크로아티아 알파벳일 가능성이 높기 때문에 추가적으로 i+1번째 알파벳 또는 i+2번째 알파벳까지 "-, =, j, z="등이 맞는지 확인하고, 맞다면 i를 해당 알파벳의 위치값으로 이동시켜주기 (i++ or i+=2)
  3. cnt의 값을 1증가시켜 단어를 세어주기(일반 문자열일 때 또는 2번에 해당되는 알파벳, 기호일 때 단어를 세어주는 것임)

- 실행결과

BOJ 2941번 실행결과

 

#BOJ 2884번 : 알람 시계

BOJ 2884번 문제

- 풀이

#include <stdio.h>

int main(){
    int h, m;
    scanf("%d %d",&h, &m);

    if(m < 45){
        h--;
        m += 15;
    }
    else
        m -= 45;
    
    if(h <0)
        h = 23;
    
    printf("%d %d", h, m);
}
  1. 45분 전으로 시간을 설정해야 한다는 것을 잘 생각해 보면 주어진 분(m)이 45이상일 때, 미만일 때로 나뉘어 생각해야한다는 것을 알 수 있다.
  2. 45 미만일 땐, 시(h)를 1빼고, 분(m)을 15 더해주면 된다. (단순히 시간 뺄셈을 해준다고 생각하면 됨. 1시간은 60분이고 45 미만일 때 45를 빼주면 시에서 60을 받아내려서 계산하면 15가 남아 더해주기 때문이다.)
  3. 45 이상일 땐, 분(m)에서 45를 뺀다.
  4. 마지막으로 만약 시(h)가 0 미만일 경우(-1이 될 경우), 시는 23시가 되는 것을 의미함으로 h에 23을 대입한다.

- 실행결과

BOJ 2884번 실행결과

'2021 SISS 21기 활동 > 겨울방학 C' 카테고리의 다른 글

[BOJ_C] 1316번, 2869번  (0) 2021.02.08
[BOJ_C] 2748번, 2750번  (0) 2021.02.01
[BOJ_C] 1037번, 1712번  (0) 2021.01.18
[2021 겨울 C언어 2주차]  (0) 2021.01.14
[BOJ_C] 10809번, 10773번  (0) 2021.01.06