본문 바로가기

프로그래밍_백준/C++

(22)
(C++) 백준 15829번 Hashing 구현 백준 15829번 문제는 Hashing 함수를 구현하는 함수입니다. 먼저! 해시 함수는 임의의 길이를 가진 데이터를 고정된 길이로 매핑하는 함수입니다. 아스키 코드를 이용하여 abcd를 숫자로 바꾸어주었고 이를 이용하여 hashing 함수를 구현하였습니다. #include #include using namespace std; int main() { long long r=1, sum = 0, M=1234567891; int n; string str; cin >> n; cin.ignore(); char* a = new char[n]; getline(cin, str); for (int i = 0; i < n; i++) { a[i] = str[i]; sum = (sum + (a[i] - 96) * r) % M;..
(C++) 백준 2798 블랙잭 백준2798번 문제는 블랙잭 문제입니다! 이 문제는 3중 반복문으로 모든 경우의 수를 파악하고 m-sum을 통해 최솟값을 찾습니다. sum값은 m을 넘는 경우를 제외하기 위해 m-sum>=0으로 하였습니다. 또한, m-sum> n >> m; int min = m;//값은 m을 넘을 수 없으므로 m으로 설정 cin.ignore(); int a, index = 0, result = 0, max_index = 0; int* b = new int[n]; string str; stringstream stream; getline(cin, str); stream.str(str); while (stream >> a) { b[index] = a; index++; }//입력된 값을 배열에 따로 따로 대입합니다 for (i..
(C++) 백준 2292번 벌집 백준 2292번 문제는 벌집문제입니다! 그림을 보면 알 수 있듯 육각형이 반복되는 특성이 있습니다 이를 활용하여 n에 6씩 누적으로 감소시키며 그 횟수로 방을 찾을 수 있습니다 #include using namespace std; int main() { int n, i = 1, a = 0; cin >> n; while (n > 1) { //i가 1일 때 반복문 넘김 a += 6; n -= a; i++; }//방 위치 구하기 cout
(C++) 백준 2331번 분해합 문제 이번 문제는 분해합을 찾는 문제입니다! 간단하게 m값을 입력 받고 이 입력 받은 m값을 각 자릿수의 숫자를 더합니다! 그리고 그 값과 n의 값을 더한 값이 m과 같으면 분해합을 구했습니다! 그렇지 않으면 0을 출력하게 했습니다 어차피 n의 값은 m을 넘지 못하니 쉽게 구할 수 있습니다 #include using namespace std; int main() { int m, tmp, a=0, n=1;//tmp는 n값을 복제하는 용도입니다! cin >> m; for (int i = 0; i < m; i++) { tmp = n; do { a += tmp % 10; tmp /= 10; } while (tmp != 0);//m의 각 자릿수를 더한 값을 a에 저장 if (n + a == m) { cout
(C++) 백준 10250번 ACM호텔 [몫, 나머지 활용] 백준 10250번은 몫과 나머지를 이용해서 해결할 수 있습니다. 나누어 떨어지는 경우 꼭대기 층으로 그렇지 않으면 n%h*100으로 층수를 구하고 (n/h)+1로 호수를 구합니다. int main() { int t; int h, w, n; int result; cin >> t; for (int i = 0; i > h >> w >> n; if (n%h == 0) { result = h * 100 + (n / h); }//n%h가 0일 경우 꼭대기 층에 호수 대입 else { result = (n%h) * 100 + (n / h) + 1; }//그렇지 않으면 몫과 나머지를 이용하여 출력 cout
(C++) 백준 10250번 ACM호텔 [이중포인터, 2차원동적배열] 활용 백준 10250번 문제는 ACM호텔 문제입니다! 먼저 1호 라인을 채워준 후 2호..3호..순으로 채워주는 문제입니다 저는 이 문제를 이중포인터를 활용해서 2차원 동적배열로 만들고 각 배열마다 호수를 넣어줬어요! 그리고 순서에 맞는 호수를 출력하는 방식으로 해결했습니다! #include using namespace std; int main() { int t, h, w, n, a=100, x=-1, y=0;//t는 반복 횟수, h는 층수, w는 호수, n은 순서, x, y는 배정 호수의 좌표입니다! cin >> t; cin.ignore(); for (int i = 0; i > h >> w >> n; cin.ignore(); int** arr = new int* [h]; for..
(C++) 백준 4153번 직각삼각형 백준 4153번 문제는 직각삼각형 판단하기입니다! 여기서 주의할 점은 "0 0 0" 값이 입력되기 전까지 코드는 반복합니다! 또한, 값이 무작위로 써져 있으면 값을 정렬해야 합니다. 반복문은 while(true)로 설정하여 따로 반복문을 탈출하라는 명령어가 없으면 반복하게 합니다. 만약 "0 0 0"이 입력되면 break로 탈출합니다! 정렬되어 있지 않은 값을 정렬하고 이 값으로 직각삼각형인지 판단합니다! #include #include #include #include using namespace std; int main() { string str; int a, tmp, i=0, b[3] = {0,}; stringstream stream; while (true) {//반복문을 break를 만나기 전까지 ..
(C++) 백준 1085 직사각형에서 탈출 [min()] 활용 이번에는 헤더파일을 통해서 min() 함수를 이용했습니다! min() 함수를 이용하면 편하게 구하실 수 있습니다! #include #include using namespace std; int main() { int x,y,w,h; int tmp1,tmp2; cin >> x >> y >> w >> h; tmp1 = min(x,y); tmp2 = min(w-x,h-y); cout

728x90