BOJ 문제풀이 109

백준 1259 c++ 풀이

안녕하세요 오늘은 어떠한 수의 대칭성 유무를 파악해보겠습니다. 이 문제는 인풋을 string 타입으로 받는것이 좋습니다. 그후에, 이 인풋이 "0"이라는 문자이면 while 문에서 벗어나고, 그것이 아니면 a라는 인풋의 문자열 길이를 대입하는 변수를 만들어줍니다. 이 문자열의 길이가 짝수인지 홀수인지 판별하여 반복문을 돌려서, 양끝 문자를 비교합니다. 코드: #include using namespace std; int main(){ while(1){ string x; cin>>x; if(x=="0") break; int a = x.length(), count=0; if(a%2==1){ for(int i = 0; i

BOJ 문제풀이 2021.08.04

백준 2920번 c++ 풀이

안녕하세요 오늘은 쉬운 편에 속하는 문제를 풀어보겠습니다. 우선은 계속 8번동안 비교하면서 i번째 때 인풋이랑 i랑 다르면 as를 false로 지정해주고, i번째 반복때, 인풋이랑 9-i랑 다르면 de를 false로 지정해줍니다. 그리고 if문으로 출력합니다. 코드: #include using namespace std; int main(){ bool as = true, de = true; for(int i = 1; i>x; if(i!=x) as=false; if(x!=9-i) de = false; } if(as) cout

BOJ 문제풀이 2021.08.04

백준 2108번 c++ 풀이

안녕하세요 오늘은 특정 알고리즘을 사용하지 않아도 되는 문제를 풀어보겠습니다. 이 문제는 다른것들은 어렵지 않은데 3번째로 출력해야하는 것이 조금 까다롭습니다. 우선은 8001짜리 길이의 배열을 만들어주어, -4000~4000의 숫자들을 관리할 수 있게 하겠습니다. 그런다음 int x로 인풋을 받고 그 값을 4000 더해준 배열의 위치의 값에 1을 더해줍니다. 배열의 원소들 중 최대값(최빈수)을 구해준다음, 그 최대값을 배열에서 검색해서 그 위치를 알아낸다음 두번째 값에다가 4000을 빼준값을 출력하면 됩니다. 코드: #include #include using namespace std; int main(){ int N, sum= 0; cin>>N; vector v; vector res(8001); for..

BOJ 문제풀이 2021.08.04

백준 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