풀이 60

백준 1181번 c++ 풀이

안녕하세요 오늘은 문자를 정렬해야하는 문제를 풀어보겠습니다. 이 문제는 특이하게 문자열을 정렬해야하는 문제입니다. 처음에 입력을 받을때, 이름이 v인 vector에 입력을 받은 값이 원소로 있는 지 확인후에, 없으면 v.end()를 return 하기 때문에 비교연산자로 비교해주어서 만약 없으면 v에 입력받은 값을 대입해줍니다. STL에 있는 sort 함수를 이용해서 문자들을 정렬하게 되면 사전순으로 정렬이 됩니다. 이를 이용해서, 문자열의 길이가 같으면 sort하고, 그게 아니라면 문자열의 길이가 짧은 순으로 오름차순으로 정렬하겠습니다. 코드: #include #include using namespace std; int cp(string a, string b){ if(a.length() == b.leng..

BOJ 문제풀이 2021.08.03

백준 11651번 c++ 풀이

안녕하세요 오늘은 11650번과 연계되는 정렬 문제를 풀어보겠습니다. 이문제는 이나 헤더파일에 있는 함수인 sort 함수를 이용해서 풀어줍니다. 이차원 vector를 sort함수를 통해서 정렬해주면 2차원 원소까지 모두 고려해서 정렬해주므로 이 점을 이용해서 풀었습니다. 코드: #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin>>N; vector v(N, vector(2)); for(int i = 0; i>v[i][1]; cin>>v[i][0]; } sort(v.begin(), v.end()); for(int i = 0; i

BOJ 문제풀이 2021.08.03

백준 11650 c++ 풀이

안녕하세요 오늘은 정렬을 이용한 문제를 풀어보겠습니다. 여기서 알아야 할것은 이차원 배열에서 정렬을 하게 되면 배열을 정렬한다는건데, 배열을 비교할 때, 첫번째 원소부터 비교해서 정렬하게 됩니다. 따라서 따로 무언가 조치를 취하지 않아도 sort함수 하나만으로 문제를 쉽게 풀 수 있습니다. 코드: #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin>>N; vector v(N, vector(2)); for(int i = 0; i >v[i][0]; cin>>v[i][1]; } sort(v.begin(),v.end()); for(int ..

BOJ 문제풀이 2021.08.02

백준 1003번 c++ 풀이

안녕하세요 오늘은 다이나믹 프로그래밍 알고리즘을 이용한 문제를 풀어보겠습니다. 0 반환횟수를 저장하는 배열 f_0과 1 반환횟수를 원소로 하는 배열 f_1을 만들었고, fibo_0, fibo_1 함수도 만들었습니다. 코드: #include using namespace std; int f_0[45]; int f_1[45]; int fibo_0(int n); int fibo_1(int n); int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); for(int i = 2; i>T; for(int i= 0; i>x; if(x>=2){ cout

BOJ 문제풀이 2021.08.01

백준 4153번 c++ 풀이

안녕하세요 오늘은 단순 수학문제를 풀어보겠습니다. 계획은 우선 세 점을 입력 받아서 정렬하고, 피타고라스의 정리를 이용하여 직각삼각형 판별을 해볼 겁니다. 코드: #include #include using namespace std; int main(){ while(1){ vector v(3); int x, y, z; cin>>x>>y>>z; if(x==0) exit(0); v.at(0) = x; v.at(1) = y; v.at(2) = z; sort(v.begin(), v.end()); x = v.at(0), y = v.at(1), z = v.at(2); if(pow(x,2) + pow(y,2) == pow(z,2)){ cout

BOJ 문제풀이 2021.08.01

백준 3009번 c++ 풀이

안녕하세요 오늘은 좌표 관련된 수학 문제를 풀겠습니다. 이 문제는 국민대학교 알고리즘 대회 예제 문제와 매우 유사한데요, 이 문제는 단순합니다. 네번째점의 x좌표는 나머지 세 점의 x좌표중 하나밖에 없는 것을 선택하면 되고, y도 마찬가지입니다. 코드: #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int arr_x[3]; int arr_y[3]; for(int i = 0; i>arr_x[i]>>arr_y[i]; } int x, y; if(arr_x[0] == arr_x[2]){ x = arr_x[1]; } else{ x = arr_x[2] + arr_x[0] - arr_x[1]; } i..

BOJ 문제풀이 2021.08.01

백준 1085번 c++ 풀이

안녕하세요 오늘은 단계별로 풀어보기 수학 카테고리에 있는 문제를 풀어보겠습니다. 범위를 보시면 아시겠지만 한수(x,y)는 직사각형 안에 위치한다는 것을 알 수 있습니다. 그러므로 직사각형 각 변까지의 거리중 최솟값을 출력해주면 됩니다. 코드: #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int min; int x, y, w, h; cin>>x>>y>>w>>h; min = x; if(min>w-x) min = w-x; if(min>y) min =y; if(min>h-y) min = h-y; cout

BOJ 문제풀이 2021.08.01