Language/C
-
백준 1152번 : 단어의 개수Language/C 2021. 6. 1. 21:51
띄어쓰기(공백)를 기준으로 나누어 단어의 갯수를 세어주는 코드를 짜보라는 문제이다. 주의해야할 점은 문자열을 입력받을때 문자열의 맨 앞, 맨 뒤에 공백이 있을 수 있다는 것이다. 맨 앞, 맨 뒤의 공백을 없애거나 무시해주면서 띄어쓰기(공백)의 개수를 세어주는 코드를 짜보자. 일단 맨 앞, 맨 뒤가 공백일 경우를 생각해봤다. 문제에서 보면 공백이 연속해서 나오는 경우는 없다고 했다. 그러므로 앞이 공백이라면(arr[0]) 공백을 무시하고 2번째(arr[1])부터 읽으면 된다. 그리고 맨 뒤가 공백일 경우도 있으니 맨 뒤(arr[n-1])도 무시하고 읽어주면 된다. 이렇게 맨 앞, 맨 뒤가 공백일 경우는 해결해주었다. 다음으로 문자열 자체가 공백일 경우(입력받은게 없을 경우)를 생각했다. 입력받은게 없다면 ..
-
백준 2675번: 문자열 반복Language/C 2021. 5. 23. 16:24
하나씩 생각해서 코딩을 짜보자. 1. 몇 번을 수행할지 입력을 받고 - scanf / for 2. 입력받은 문자열을 각 문자당 몇번 출력할지를 받고 - scanf 3. 문자열을 입력받으면 된다 - scanf / gets #include #include int main(void) { int a, b; char arr[20]; scanf("%d", &a); for (int i = 0; i < a; i++) { scanf("%d", &b); scanf("%s", arr); for (int i = 0; i < strlen(arr); i++) { for (int t = 0; t < b; t++) { printf("%c", arr[i]); } } printf("\n"); } } 이렇게 코드를 짜주었다. VS2019..
-
백준 2566번: 최댓값Language/C 2021. 5. 15. 02:38
https://hi-bald-person.tistory.com/49 백준 2562번: 최댓값 문제를 보자면 자연수를 입력하고, 그중 최댓값과 최댓값이 몇 번째로 입력받은 수인지를 출력해줘야 한다. 자연수를 9개 입력해줘야 하기 때문에 배열을 사용할 것이고, 배열에 들어간 수들을 hi-bald-person.tistory.com 앞선 최댓값 문제가 1차원 배열이었고, 이번 문제는 2차원 배열의 문제이다. 1차원 배열 문제풀이와 별 다를 것이 없긴 하다. 쉽게 코드를 짤 수 있었다. 1차원에서 2차원으로 바뀌었다 해도 풀이법은 비슷하니 직접 한번 해보자.
-
백준 2577번: 숫자의 개수Language/C 2021. 5. 15. 02:17
문제를 풀기는 했으나 어려웠다. 필자가 어려웠다 생각한 부분은 숫자가 각각 몇 번 쓰였는지를 출력해주는 부분인데, 해당 부분은 다른 분들의 풀이를 참조했다. (실상 문제 포인트가 이것인 것 같다.) 배열을 두 개 사용해줘서 한 곳은 scanf로 입력한 값을 저장하고 다른 한 곳은 입력받은 값의 곱의 숫자의 개수를 세주는 데 사용하였다. 주요 포인트를 설명하자면 arr[mul % 10]++이다. 입력받은 세 수를 곱한 값을 mul에 저장해주고, mul을 10으로 나눈 나머지 값에 해당하는 arr 배열의 익 덱스 값을 1씩 증가시켜주는 것이다.
-
백준 2562번: 최댓값 (배열 풀이)Language/C 2021. 5. 15. 00:54
문제를 보자면 자연수를 입력하고, 그중 최댓값과 최댓값이 몇 번째로 입력받은 수인지를 출력해줘야 한다. 자연수를 9개 입력해줘야 하기 때문에 배열을 사용할 것이고, 배열에 들어간 수들을 하나씩 비교해 최댓값을 구해줘야 하기 때문에 for문을 통해 하나씩 비교해주면 될 것이다. 위와 같은 코드를 짜 사용해주었고, for문을 두 번 사용해서도 코드를 짤 수 있지만 가능한 한 코드 길이를 줄일 수 있도록 해주자. * 원래 필자는 위와 같이 for문을 두 번 써서 첫 번째 for문에서는 scan을 해주고, 두 번째 for 문에서는 비교를 하는 방식의 코드를 더 좋아한다. "굳이 for문을 두 번 안 쓰고 한 번에 가능한데? 왜?"라고 생각하는 게 보통일 거라 생각하는데, 필자가 보기 불편하다. (대충 "내 맘"..
-
백준 2576번: 홀수Language/C 2021. 5. 11. 18:30
복잡한 문제의 경우 노트에 필기를 하면서 풀이법을 적어보자. 7개의 자연수를 입력받는다. 7개의 자연수의 홀 / 짝 여부를 결정한다. 홀수일 경우 홀수끼리 더 해주고, 짝수일 경우 더하지 않는다.(0을 더한다.) 홀수 중에 가장 작은 수를 찾아준다. 먼저 자연수를 연속해서 받으려면 배열을 사용해야겠다고 생각했다. 입력받은 자연수 중 홀수의 경우와 짝수의 경우로 나누어 주고, 홀수일 경우에 sum(초기값 0)에 홀수인 값을 더해주고, 짝수의 경우 sum에 0을 더해준다. 만약 입력받은 숫자들이 모두 짝수일 경우 sum은 0의 값을 갖기 때문에 sum ==0 일 경우에는 문제 내용에 따라 -1을 출력해주고, sum != 0 일 경우에는 홀수들을 더한 sum 값을 출력해주면 된다. ** 함수를 사용하여 풀어야..
-
백준 5073번: 삼각형과 세 변Language/C 2021. 5. 11. 16:45
문제가 살짝 복잡하다. (나의 느낌) 필기를 하면서 문제풀이를 생각했다. 삼각형의 조건을 만족(한다. / 안 한다.) 삼각형의 조건을 만족했을 경우에 해당하는 3가지(Equilateral / Isosceles / Scalene), 삼각형의 조건을 만족하지 못했을 경우 (Invalid) 이와 같은 경우들을 생각하고 코드를 짜보았다. 첫 번째로 삼각형의 조건(가장 긴 변의 길이 < 나머지 두 변의 길이의 합)을 만족하는 경우를 찾기 위해 가장 긴 변의 길이를 찾는 Max() 함수를 만들었다. 두 번째로 삼각형 조건이 만족했을 경우에 해당하는 삼각형을 찾아주는 triangle() 함수를 만들어 주었다. 마지막으로 위의 두 함수를 사용하여 세 변의 길이가 모두 0이 아닐 때까지, 입력된 세 변의 길이 중 가장 ..