본문 바로가기
반응형

BOJ47

[C] 백준 2839번 설탕 배달 때론 무식하게 접근하는 것이 싸게 먹힐때도 있는 것 같다. 효율적인 코드를 짜려다가 다 실패하고 무식하게 2중 for문을 이용해 맞췄다. #include int main() { int n; scanf("%d", &n); for (int i = 0; i 2018. 7. 8.
[C] 백준 2941번 크로아티아 알파벳 정답률이 30%대 이하는 아니지만, 특이한 케이스로 헤맨 문제여서 올렸다. 방식은 우선 크로아티아 알파벳을 문자열 내에서 다 찾아내 지워준다. 단, 지운다음에 다음 순회에서 지우고 합쳐진 문자열에서 크로아티아 알파벳으로 오인될 수 있는 경우가 있기 때문에 중간에 0을 넣어준다. ex 1) nljj 에서 lj를 찾고 알파벳 개수를 증가 시킨 뒤, lj를 지우면 nj가 된다. 문자열 nj가 크로아티아 알파벳으로 오인되어 2개로 카운트하게 된다. ex 2) nljj 에서 lj를 찾고 알파벳 개수를 증가 시킨 뒤, lj를 지운다. strstr을 이용해 찾아낸 lj가 처음 나타난 인덱스에 '0'을 집어넣고, 그 다음인덱스부터 붙여 넣는다. 그럼 문자열은 n0j가 되고, 알파벳을 잘못 셀 경우가 사라진다. 그 다음.. 2018. 7. 5.
[C++] 백준 1929번 소수 구하기 (에라토스테네스의 채) m과 n을 입력받고 m과 n 사이에 있는 소수를 출력하는 프로그램이다. 단, 에라토스테네스의 채를 이용해서 풀어야한다. 미리 1~1000000 까지의 수 중에서 소수인 수를 걸러내고, m부터 n까지의 값 중 소수인 것을 출력한다. #include int main() { bool num[1000001]; int m, n; int i, j; scanf("%d %d", &m, &n); for (i = 2; i 2018. 7. 4.
[C] 백준 1157번 단어 공부 방학에 돌입하고 알고리즘 공부도 할 겸 백준을 하나씩 풀어보고 있다. 다시 시작한 지 얼마 안돼서 단계별로 풀어보기부터 하고있는데, 정답률이 30%대 이하인 문제를 풀면 코드를 포스팅해서 기록해야겠다. 나름의 만족감을 느끼기 위해! 단어 공부 문제는 알파벳 대소문자로 된 단어를 입력하면 가장 많이나온 알파벳이 무엇인지 출력하는 문제이다. 단, 가장 많이나온 알파벳이 여러개면 '?'를 출력한다. 대소문자 구분 없이 알파벳을 세기 때문에 단어를 입력 받은 뒤 바로 전부 대문자로 바꿔주는 작업을 했다. 변수는 가장 많은 알파벳의 개수, 가장 많이 나온 알파벳의 빈도 수(몇 번 나왔는지), 가장 많이 나온 알파벳 이렇게 세 가지로 사용했다. 이중 for문으로 순회할 때 j의 크기가 기준인 i보다 작을 때 str.. 2018. 7. 3.
[C] 백준 1152번 단어의 개수 백준에 단계별로 풀어보기 - 1차원 배열 사용하기에 있는 1번째 문제인 단어의 개수 문제는 이상하리 만큼 정답 비율이 낮다. 나도 예전에 풀었던 흔적이 있는데, 가차없이 틀렸다.. 10번정도.. 그동안 풀었던 모든 코드에는 간과한 경우가 두 가지 있는데, 첫 번째는 처음 나오는 공백, 두 번째는 마지막에 나오는 공백이었다. 그래서 방식을 바로 전 인덱스에서 읽어낸 문자가 공백인지를 판단하는 변수를 따로둬서 연속된 공백이 포함된 문장도 처리할 수 있도록 했다. 바로 전 인덱스에서 공백이고, 현 인덱스에서 문자이면 새로운 단어가 나타난 것이다. 그 때 단어의 개수를 증가시킨다. 단, 문장의 처음은 공백이 없을 수도 있으므로 공백이었는지를 판별하는 isSpace를 1(공백이 나옴)로 초기화한다. #includ.. 2018. 7. 2.
반응형