전체 글

코딩을 공부하는 대학생입니다. https://github.com/Hyeri1ee
백준 -단계별로 풀어보기 - 2941 https://www.acmicpc.net/problem/2941 풀이1 (내 풀이) 1) - 가 있는 경우 2) = 가 있는 경우 3) j 가 있는 경우 각각에 대해 if 조건문으로 n (단어 길이) 에서 1 혹은 2씩 감소시킨다. #include #include using namespace std; /* * 제시된 9개의 크로아티아 알파벳 제외 나머지 알파벳은 정상적으로 세는 것다. * = 이 붙은 것은 dz=인 경우 (-2) 이를 제외하고 (-1) * - 이 붙은 것은 언제나 (-1) * */ int main() { cin.tie(NULL); ios_base::sync_with_stdio(false); string s; cin >> s; int n = s.len..
풀이1 (내풀이) 입력 단어의 길이가 1,000,000 이하 이므로, int alphabet[26]으로 설정해야한다. char alphabet[26]으로 설정하면 각 문자당 127개까지만 셀 수 있다. 'A'가 65, 각 소문자는 대문자에 +32 한 것을 활용해서 대문자 기준으로 각 알파엣의 index를 설정하였다. 처음에 aabc 반례를 못 찾아서 계속 '틀립니다'가 떴다. 이를 위해 break;를 없앴다. #include #include #include using namespace std; /* * alphabet[26] 배열은 소문자, 대문자 구분안한 알파벳 각각의 개수 * A = 65 (아스키코드)를 이용, a = A + 32 임을 이용 * 문자열 각각의 문자 하나씩 보면서 alphabet 의 값..
ios_base::sync_with_stdio(false) : c의 sdio와 c++의 iostream의 동기화를 비활성화 한다. 평소에는 서로 동기화 상태이다. 즉, c++에서 c와 c++ 각각의 스타일로 입출력을 받아도 서로 동기화해 우리가 입력/출력하고자 하는 순서대로 결과를 얻을 수 있다. 이는 c와 c++이 동일한 버퍼를 공유하기 때문이다. 하지만 위 코드를 사용하면, 동기화를 비활성화하고, c++ 스타일 코드만 사용할 때, 기존 동기화 과정에서 필요하던 시간이 절약되어 입출력속도가 빨라지는 효과가 있다. 즉, 시간을 절약할 수 있다. 다만, 비동기화 하였으므로 c 의 입출력 (scanf, printf, getchar)을 사용할 경우 오류가 발생한다. cin.tie(null) : 입력과 출력의 ..
풀이1 (내 풀이) string의 가운데 인덱스를 기준으로 양 옆의 문자가 같으면 continue, 다르면 break후 0을 출력한다 이때, 가운데 인덱스의 기준이 string의 길이가 홀수, 짝수인 경우가 다르므로 이를 고려하여 가운데 인덱스를 정한다. #include #include using namespace std; /* * string의 길이가 홀수인 경우 * 가운데 문자의 인덱스 k 부터 시작하여 for문으로 arr[k-i] == arr[k+i]인지 확인후 i++ 하여 한번이라도 아니면 멈추고 0을 출력한다. * string의 길이가 짝수인 경우 * string 길이 반 = k 라 하여 for문으로 arr[k-i] == arr[k+1+i]인지 확인후 i++하여 똑같이 시행한다. */ int m..
c++에서 문자열을 string으로 선언하는 경우, char 배열로 선언하는 경우 차이 정리 string 선언 방식의 문자열 c++에서 헤더 파일을 포함하면 string 타입으로 문자열을 선언하여 매우 편리하게 다룰 수 있음 선언시, 문자열은 쌍따옴표(" ")로 감싸야함 char 배열 선언 방식의 문자열 선언시 null 문자를 고려하여 필요한 글자수보다 최소 1개 이상 더 크게 선언해야함 #include using namespace std; int main() { // 문자열 선언 char a[8] = "hello!\n"; return 0; } 여기에서는 7글자로 구성된 "hello!\n"를 담기 위해 null문자 포함해서 배열에 최소 8크기가 있어야함.
풀이1 (내풀이) 단순한 1차원배열로 풀었다. 배열을 0으로 초기화후, 제출한 경우 1로 바꾸고 미제출자의 경우 0이므로 0의 값을 가진 인덱스+1 (=미제출자의 출석번호) 을 출력하도록 하였다. #include using namespace std; /* * absent[30] 배열을 0으로 초기화하고 * for문으로 28번 * 제출자의 출석번호를 받아 absent의 인덱스번호로 할당하여 * absent[i] = 1로 바꾼다. * absent를 인덱스 오름차순으로 훑는데 1이면 출력한다. */ int main() { int absent[30] = { 0 }; int k; for (int i = 0; i > k; absent[k-1] = 1; } for (int i = 0;..
1차원 배열 동적 할당 //1차원 배열 동적 할당 int n; int *arr; cin>>n; arr = new int[n]; //메모리 해제 delete[] arr; 2차원 배열 동적 할당 //2차원 배열 동적 할당 int N; int **map; cin>>N; map = new int*[N]; for (int i =0; i
깃 허브에 알고리즘 공부한 거를 모두 올리려고 했는데, 올리는 과정부터가 난관이었다. 저번학기 전공 팀플을 할때는 eclipse에서 깃 허브에 올렸기 때문에 이 문제가 없었는데, visual studio에서 올리니 문제가 생겼다. visual studio 내의 solution explorer 내에 있는 필터가 폴더가 아니였다... 지금까지 필터가 폴더인줄 알았는데...이거땜에 3시간 정도 걸린 것 같다. 필터는 추상적 파일 관리 모드이고, 폴더는 실제 물리적 관리 모드로 차이가 있었다. (출처: https://kyoungseop.tistory.com/entry/VisualStudio-%EC%86%94%EB%A3%A8%EC%85%98-%ED%83%90%EC%83%89%EA%B8%B0%EC%97%90%EC%..
코딩신생아(0o0)
코딩신생아