목록coding test (140)
개발로그필름
https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 알파벳의 인덱스를 어떻게 저장해야하는지 고민했다 알파벳의 아스키 코드를 아는 것이 이 문제의 핵심 포인트 같다 a의 아스키 코드는 97이라는 것을 알아두면 좋을 꺼 같다 코드 풀이 #include int main() { char str[101] = {NULL}; int alphabet[26]; scanf("%s", &str); // alphabet 배열 안을 모두 -1로 초기화 for..
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 코드 풀이 #include #include int main() { char input[1000000]; int count[26] = { 0, }; int max; int select = 0; int result = 0; scanf("%s", input); int len = strlen(input); // 입력받은 문자열 길이 구하기 // 소문자 for (int i = 'a'; i
https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net \n를 제외한 공백 포함 문자열 입력 받는 코드 적는 방법이 scanf("%[^\n]s", input); 라는 것을 알게 되었다 문자열만 잘 입력받으면 뒤의 풀이는 쉬운 문제다 일단 공백을 찾아 count에 차례로 증가시킨 후 문제에서 앞, 뒤 공백이 있을 수 있다 했으므로 공백의 경우의 수를 차례로 정하여 코드를 짜면 된다 코드 풀이 #include #include int main(){ i..
https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 코드 풀이 #include #include int main() { int n, count = 0; char input[100]; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%s", input); count += word_count(input, strlen(input)); } printf("%d", count); ..
https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 코드 풀이 #include #include int main(void) { char input[100]; gets(input); int cnt = strlen(input); // 변경 문자에 =, -, j 가 공통적으로 있기 때문에 경우의 수를 그에 맞춰 나눠준다. for (int i = 0; i < strlen(input); i++) { if (input[i]..
https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 규칙을 찾고 나면 생각보다 너무 쉬운 문제이다 규칙을 찾기 위해 종이에 적어보았는데 2~7 : 2 8~19 : 3 20~37 : 4 38~61 : 5 위와 같은 결과가 나왔고 두 수의 차는 5, 11, 17, 23이고 차들의 차이가 6이라는 공통 수가 나왔다 코드 풀이 #include int main() { int n, i = 2, j = 5, cnt = 2; scanf("%d", &n); if (n ==..
https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 1차적으로 문제를 읽고 규칙을 찾아내는데 시간이 많이 소요되었다. 규칙을 찾아도 찾은 규칙을 코드에 어떻게 녹여내야 하는지 시간이 오래 걸렸다. 각 행 별로 나오는 분수들을 쭉 적고 입력값이 몇 번째 행에 속하지 찾는다. 찾은 행에서도 몇 번째인지 구한다 짝수 일때는 역방향이고 홀수일 때는 순 방향이므로 각각의 경우의 수를 나눠서 생각한다 코드 풀이 #include int main() { int n, sum; int index = 0; // 몇번째 행인지 scanf("%d", &n); // 행 구하기 while (1) { ind..