5622번 c언어
전화를 걸기 위해 번호를 누르는데 숫자 1을 걸려면 총 2초가 걸리고 1 보다 큰수를 거는데 걸리는 시간은 이보다 더 걸리며, 한칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
문제풀이
#include <stdio.h>
#include <string.h>
int main(void){
char arr[15]; // 문자로 받는 최대 길이가 15여서 15크기의 배열 선언.
int time=0,len;
scanf("%s", arr);
len = strlen(arr); // 문자의 길이를 측정하기 위해 strlen을 사용.
for(int i=0; i<len; i++){ // 문자의 길이 만큼 for문 실행.
char x = arr[i] - 'A'; // 입력된 문자에서 대문자 A만큼 빼준것을 x에 저장.
if( x <= 2 ){ // 만약 x 값이 0~2 사이면 ( A~C) 사이면 time 변수에 2를 더함.
time += 2;
}
else if ( x < 2 || x <= 5){ // 같은 의미로 ( D~F) 까지면 time + 3
time += 3;
}
else if( x < 5 || x <= 8){ // ( G~I ) 까지면 time + 4
time += 4;
}
else if ( x < 8 || x <= 11){ // ( J~L ) 까지면 time + 5
time += 5;
}
else if ( x < 11 || x <= 14){ // ( M ~ O ) 까지면 time + 6
time += 6;
}
else if ( x < 14 || x <= 18){ // ( P~S ) 까지면 time + 7
time += 7;
}
else if ( x < 18 || x <= 21){ // ( T~V ) 까지면 time + 8
time += 8;
}
else if ( x < 21 || x <= 25){ // ( W ~ Z ) 까지면 time + 9
time += 9;
}
else {
time += 10; // ( 그럴일 없지만 이외의 경우 time + 10 )
}
time += 1; ( 번호를 입력후 처음 자리로 돌아오기 때문에 자리수 하나당 + 1씩 해줌 )
}
printf("%d\n", time); // 모두 더한 값을 출력
return 0;
}
느낀점
#include <stdio.h>
#include <string.h>
int main(void){
char arr[15]; // 문자로 받는 최대 길이가 15여서 15크기의 배열 선언.
int time=0,len;
scanf("%s", arr);
len = strlen(arr); // 문자의 길이를 측정하기 위해 strlen을 사용.
for(int i=0; i<len; i++){ // 문자의 길이 만큼 for문 실행.
char x = arr[i] - 'A'; // 입력된 문자에서 대문자 A만큼 빼준것을 x에 저장.
if( x <= 2 ){ // 만약 x 값이 0~2 사이면 ( A~C) 사이면 time 변수에 2를 더함.
time += 2;
}
else if ( x < 2 || x <= 5){ // 같은 의미로 ( D~F) 까지면 time + 3
time += 3;
}
else if( x < 5 || x <= 8){ // ( G~I ) 까지면 time + 4
time += 4;
}
else if ( x < 8 || x <= 11){ // ( J~L ) 까지면 time + 5
time += 5;
}
else if ( x < 11 || x <= 14){ // ( M ~ O ) 까지면 time + 6
time += 6;
}
else if ( x < 14 || x <= 18){ // ( P~S ) 까지면 time + 7
time += 7;
}
else if ( x < 18 || x <= 21){ // ( T~V ) 까지면 time + 8
time += 8;
}
else if ( x < 21 || x <= 25){ // ( W ~ Z ) 까지면 time + 9
time += 9;
}
else {
time += 10; // ( 그럴일 없지만 이외의 경우 time + 10 )
}
time += 1; ( 번호를 입력후 처음 자리로 돌아오기 때문에 자리수 하나당 + 1씩 해줌 )
}
printf("%d\n", time); // 모두 더한 값을 출력
return 0;
}
이번 로직은 꽤나 노가다 성을 요구하는 문제였던것 같다. 로직은 생각보다 간단하게 떠올랐고 다른분들 풀이를 보니 arr[i] - 'A' 로 하지않고 바로 time 에 값을 더해주셨는데 배열 단원인 만큼 일부로 arr[i] - 'A' 를 활용해서 풀어봤다.
Author And Source
이 문제에 관하여(5622번 c언어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@os1227os/백준-문제풀이-5622번-c언어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)