목록Study/Algorithm (400)
hwooo
https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 풀이 각 알파벳에 해당하는 소요 시간을 배열에 저장해놓고, 그 값을 더했다. 코드 #include int main() { int sec[26] = { 3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10 }; int i = 0, time = 0; char number[16]; scanf("%s", &number); while (number[i] != NULL) { time += sec[number[i] - 'A']; i++; } pri..
https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 풀이 문자열에 입력된 문자를 정수형으로 변환하는 과정이 핵심이라 생각했다.세 자리 수 고정이므로 for문을 활용했다.정수형으로 변환 시 값이 5000대가 나왔는데 아스키 코드 값이라 '0'을 빼서 계산했고, 자릿수를 올리기 위해 pow함수를 활용했다. 문자열 문제라 문자열을 활용했지만, 자릿 수 고정에 큰 숫자도 아니라 처음부터 정수형으로 푸는 게 더 편할 듯 하다. 코드 #include #include in..
https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 풀이 공백을 입력받기 위해 %[^\n]을 사용했다. 첫 번째로 공백이 나오는 경우를 제외하기 위해 반복문을 2번째 문자부터 시행했다. 마지막에 공백이 나오는 경우를 제외하기 위해 공백 뒤에 NULL이 나오지 않는 경우에만 카운트 했다. 공백만 나오는 문자열을 받는 경우는 예외로 카운트했다. 코드 #include int main() { int i, cnt = 0; char word[100000..
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 풀이 입력된 문자가 소문자인지 대문자인지를 파악한다. 각각을 숫자로 변환하여 해당 알파벳이 쓰인 개수를 세어 저장하고, 쓰인 횟수가 같다면 '?'를 출력했다. 코드 #include int main() { int i, alphabet, loc[26] = { 0, }, max = 0, max_i = 0; char word[1000001]; scanf("%s", &word); i = 0; while (word[i] != NULL) { ..
https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 코드 #include int main() { int T, R, i, j = 0, k; char S[21]; scanf("%d", &T); for (i = 0; i < T; i++) { scanf("%d%s", &R, &S); while (S[j] != NULL) { for (k = 0; k < R; k++) printf("%c", S[j]); j++; } j = 0; printf("\n"..
https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 풀이 받은 문자를 int형으로 변환하여 a=0~z=26으로 설정했다. 코드 #include int main() { int i, alphabet, loc[26]; char word[101]; scanf("%s", &word); for (i = 0; i < 26; i++) loc[i] = -1; // 배열 초기화 i = 0; while (word[i] != NULL) { alphabet ..
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 풀이 char형으로 받은 문자를 int형에 대입했을 때 ASCII 코드 값이 나온다.따라서 0의 ASCII 코드 값인 48을 제외하면 숫자의 합이 된다. 코드 #include int main() { int N, i, sum = 0; char num[101]; scanf("%d", &N); scanf("%s", &num); for (i = 0; i < N; i++) sum += num[i]; sum -= 48 * N; /* for (i = 0; i < N; i++) sum += n..
https://www.acmicpc.net/problem/11654 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 char형으로 받은 문자를 int형으로 출력 시 아스키 코드 값이 출력된다. 코드 #include int main() { char word; scanf("%c", &word); printf("%d", word); }