접근방식처음에 이런 방식을 생각해 보았지만 예제 2에서 오류를 발견함.아래 코드는 주어진 char 배열에서 R과 B의 세그먼트 (ex. RRR, BBB)같이 연속되어 있는 알파벳의 카운트만 계산해줌.int countBall(int N, char balls[]){ int rcount = 0, bcount = 0; char curcolor = balls[0]; if (curcolor == 'R'){ rcount += 1; }else if (curcolor == 'B'){ bcount += 1; } for (int i = 1; i 이걸로는 구할 수가 없고, 먼저 R과 B의 occurence를 세준 다음B나 R을 왼쪽으로 모는 경우와 오른쪽으로 ..
풀이과정 3단계로 나눈다1. 먼저 인풋을 라인으로 받고 공백이 생길때마다 파싱을 해줘야함2. 파싱된 단어들을 벡터에 담고 또 다른 벡터에 그 단어가 존재하는지 여부 확인 후 없으면 더해주기, 있으면 추가하지 않음. 3. 다른 벡터의 원소들을 출력, 다만 i가 size -1 즉 단어의 끝이아니라면 각 단어 출력마다 공백을 더해줌. 코드 #include #include #include using namespace std;vector si;bool exists(string w){ for (auto i : w){ for (auto j : si){ if (w == j){ return true; } } } r..
문제 풀이 과정 백준 N과 M과 굉장히 문제가 유사하지만 그건 순열문제, 이건 조합문제로 visited[i]제거하고 N과 K가 가능한 조합을 모두 만든 다음, 만약 A가 N과 K로 만든 조합안에 들어있다면 그걸 문제에서 요구하는 인덱스데로 출력시킨다. 코드#include #include #include using namespace std;vector pc;vector s;int n, k;vector> combi;void comb(int s, int d){ if (d == k){ combi.push_back(pc); return; } for (int i = s; i > n; cin >> k; comb(1, 0); sort(com..
풀이과정z가 0보다 클때부터 계속 z 감소시키면서 팩토리얼 출력, 1일때는 원하는 형태로 출력하고 값 계속 ans에 *= 형태로 저장시키고,마지막에는 문제에서 원하는 출력과 ans를 출력해준다. 코드#include using namespace std;typedef long long ll; int main(){ ll z; ll ans = 1; cin >> z; while (z > 0){ if (z == 1){ cout #include using namespace std;typedef long long ll; int main(){ ll z; ll ans = 1; cin >> z; while (z--) { i..
풀이 생각 과정#include using namespace std;int main(){ char arr[30][30]; for (int j = 1; j > arr[j][i]; } } for (int j = 1; j 처음에는 단어를 받는 방법을 Aa0Ff, Bb1Gg 이런식으로 저장하고 공백이 생기면 무시하라 했지만, 저장의 방법이 잘못됬고, memset이 없어서 arr[i][j] 가 ' ' 로 지정됬는지 확인도 안됨. 따라서 memset() 으로 먼저 2차원 배열을 ' '로 지정시키고, 아예 string을 가져와서 단어를 ABCDE abcde 식으로 공백을 포함한 단어를 2차원 배열에 글자 형태로 저장한 후 공백이 없는 글자들만 문제에서 원하는 대로 출력시키는 접근으로..
풀이과정 문자열 문제라는건 문제만 봐도 아는 사실이고, 이를 찾기위해 처음에는 이런 형태로if (s1.find(s2) != std::string::npos) { std::cout npos를 써서 체크하려 했지만 npos는 정확히 매칭되는 거만 찾지 문제에 나와있듯에 KOIOI에서 KOI가 한번 IOI가 한번 나와줘야 정상인데 npos를 쓴다면 KOI가 한번밖에 나오지 않음. 따라서 substring을 3글자씩 떼준다음 시작인덱스를 하나씩 늘려가는 방법으로 풀어내야함. 코드#include using namespace std;int main(){ string s; cin >> s; string ioi = "IOI"; int icount = 0; string koi = "KO..
풀이과정머리에 생각나는 대로 배열 이용해서 풀었고, ans를 미리 10을 더해주냐 마냐에 따라 약간 바뀌는 부분은 있지만 전체적 로직은 동일. 코드1 (처음 바닥에 있는 그릇 높이를 미리 더해주고 그 다음 그릇들만 생각했을 때) #include using namespace std;int main(){ string s; cin >> s; int len = s.size(); int ans = 10; for (int i = 1; i 코드2(처음 바닥에 있는 높이도 조건문 안에서 계산됨)#include using namespace std;int main(){ string s; cin >> s; int len = s.size(); int ans = 0; ..
풀이과정처리조건 기본 format: for (int i = 1; i 2번과 3번 조건을 만족하기 위해 뒤에 들어가는 루프는 j를 i부터 n까지 설정하고 더하고 k를 빼줌으로써 문제에서 요구한 모양으로 일단 배열을 알파벳으로 채움.(1, 5) (2, 4) (3, 3) (4, 2) (5, 1) (2, 5) (3, 4) (4, 3) (5, 2) (3, 5) (4, 4) (5, 3) (4, 5) (5, 4) (5, 5) 순서로 채워야함. 출력과정여기가 좀 어려웠는데, 이중포문으로 j = i 부터 n - 1까지 돌면서 먼저 공백들을 채워주고 (아니면 공백이 없어서 출력이 ABCDE가 다 왼쪽에 붙어나옴) j = 1 부터 n까지 돌면서 null 값이 아니면 출력을 해야함.(2차원 배열 모두 '\0' n..
풀이과정짝수 행은 역순으로 출력하므로 rowcount 지정하고 짝수일때는 역순으로, 홀수일때는 정순으로 출력.int에서 char로 바꾸기, char 에서 int 로 바꾸기 주의 코드1(Z이상은 A일때 %사용)#include #include using namespace std;int main(){ vector> arr(101); int n; int num = 0; int rowcount = 1; cin >> n; for (int i = 1; i = 1; j--){ arr[i][j] = 'A' + (num++ % 26); //rowcount++; } }else{ ..
- Total
- Today
- Yesterday
- 24954
- 숫자사각형3
- 8129
- N과M
- 2604
- 연필공장
- 세로읽기
- 문자열찾기
- 볼모으기
- 볼 모으기
- 15651
- 트리 순회
- 2857
- 색종이(중)
- 문자삼각형1
- 정올
- 문자사각형
- 15652
- 1535
- 1338
- 1304
- 백준
- 색종이(초)
- 5545
- 1438
- 몇번째조합
- 3427
- 15650
- 단어집합2
- 15654
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |