1-L 질문 있습니다!
258
작성한 질문수 5
http://boj.kr/c662ed4ae3554592adf3f8e8d6fa70eb
안녕하세요, 선생님!
저는 처음에 풀때 콤비네이션이 아닌
카운팅 배열 방법 사용을 생각하여 문제를 풀어보았습니다.
풀고 난 뒤에 예외처리가 미흡하여 백준에서 20번 정도 틀렸습니다.
반례를 생각하며 가장 앞 부분 가장 뒷 부분 경계 체크를 열심히 하였으나 틀리는 이유를 도무지 모르겠습니다.
선생님께서 하신 방법에 대한 이해는 모두 하였으나
제 코드의 오류가 무엇일지 정말 궁금하여 질문을 남깁니다ㅠ
예외 처리를 많이 하느라 코드가 지저분해 보일 수 있는 점 죄송합니다.
답변 1
0
안녕하세요 100억님ㅎㅎ 로직 자체가 꼬인 거 같습니다.
for (int i = 1; i <= 100000; i++){이렇게 되면 i가 1 부터 10만까지 모든 경우의 수를 체크하는데요.
왜 그래야하죠?
만약 그렇게 한다고 하면 해당 i라는 값을 충족시키기 위한 map을 다 탐색하는 로직이 필요할텐데요.
이렇게 되면 카운팅배열을 만든 의미가 없어집니다.
이렇게 코드를 짜는 것은 어떤가요?
100억님의 코드를 응용해봤습니다.
#include <bits/stdc++.h>
using namespace std;
int cnt;
int trg;
map<int, int> mat;
int res;
int num;
int main()
{
cin >> cnt >> trg;
for (int i = 1; i <= cnt; i++)
{
int temp;
cin >> temp;
mat[temp]++;
}
for(auto it : mat){
if(trg - it.first > 0 && mat[trg - it.first] > 0){
res += min(mat[it.first], mat[trg - it.first]);
}
}
cout << res / 2 << '\n';
}
감사합니다.
0
제가 초반에 짜놓은 틀에 너무 갇혀있던 것 같습니다..!
특히, 재료값 2개의 최소값만 결과에 더하고 이후에 나누기 2를 해주는 로직은 생각치 못했는데
훨씬 간결해보입니다. 감사합니다!!
교안 158페이지 문의드립니다
0
18
2
코딩살구클럽 관련 건의사항
0
36
1
코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다
0
20
1
진행 방법 질문드립니다!
0
52
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
58
2
2주차 개념#12 트리 순회
0
27
2
백준사이트가 종료된다고 합니다.
0
287
2
백준 서비스 종료
9
890
1
sk 하이닉스 코테 대비
0
368
2
3-G 최댓값 질문
0
51
1
모듈러 연산 값이 10이 아닌 경우도 있지 않나요?
0
83
2
3-I 코드 질문드립니다.
0
62
2
3-N 질문 있습니다.
0
66
2
학습방법
0
102
2
4-H 질문 있습니다 (코드 리뷰)
0
66
2
코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.
0
170
2
2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.
0
69
2
2주차 개념 #4-2. 인접행렬 질문있습니다.
0
64
2
1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.
0
51
2
조합 재귀 풀이 확인 해주시면 감사하겠습니다.
0
68
2
함수별 시간복잡도
0
73
2
3-h 질문입니다.
0
49
1
안녕하세요 선생님. 시간 복잡도 4번 질문있습니다.
0
53
2
1-I 문제 질문 드립니다.
0
76
2





