본문 바로가기

반응형

전체 글

14891번 14891번 - 톱니 바퀴 문제에서 구하란 대로 시뮬레이션을 통해서 풀었다. 톱니는 deque 를 이용해서 각 방향값들을 담았다. deque 를 쓴 이유는 톱니가 회전했을 경우, 톱니 값들을 앞으로 밀거나 뒤로 밀기에 편리하기 때문에 사용하였다. rotate 함수를 통해서 w 위치에서 r 방향 움직이게 하였고, dir 을 통해서 처음에 0일때만 양방향으로 1이면 오른쪽으로만, 2이면 왼쪽으로만 재귀함수가 실행되도록 하기 위해서 추가하였다. 마지막 합을 구할 때 비트마스크 연산을 사용했는데, 아직 이 비트마스크가 헷갈려서 처음에 i 더보기
14888번 14888번 - 연산자 끼워넣기 삼성 sw역량테스트 문제라는데, 나는 본 적 없으니 CE/IM 문제인 것 같다. 완전탐색을 이용하면 쉽게 풀리는 문제다. 단 나는 처음에 maxx 값을 0으로 초기화해서 시간이 지체했다. 값이 -10억까지 나올 수 있으므로 그 미만의 값으로 초기화했어야 했다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include#include using namespace std;int A[12];int have[4];int n;int maxx = -98765432.. 더보기
14889번 14889번 - 스타트와 링크 2017년 하반기 삼성전자 sw 역량테스트 문제이다. 나는 이때 직접 시험을 봤는데.. 그때 대충 팀 나누는 거 까지는 감 잡았는데 그 뒤로 멘붕이었는데.. 다시 풀어보니 너무 쉬운 문제였다.. 다만 처음에 팀을 두개로 안나누고, 한개의 팀으로 풀려다 보니 시간초과가 나는 부분이 있었다. 그 부분은 재귀함수에서 변수를 하나 추가해주는 방식으로 풀 수 있었다. 여기서 막혔었다. 팀을 두개로 나눠서 풀면, 복잡한 생각없이 풀 수 있는 문제였다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#include#include usin.. 더보기
비트마스크 연산 http://oniondev.egloos.com/9839582 http://studymake.blogspot.kr/2015/05/cc_14.html 감사합니다. 더보기
10026번 10026번 - 적록색약 간단하게 적록색약이 아닐때, 적록색약일 때 dfs를 두번 돌리면 된다. map 을 다시 새로 만들거나 해도 되는데, 그냥 dfs2 라는 함수를 만들어서 문제를 풀었다. BFS 로도 풀 수 있다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104#include#include using namespace std;int dx[4] = { 0,0,1,-1 };int dy[4].. 더보기
5214번 5214번 - 환승 처음에 V의 값이 꽤나 크긴 했지만, vector 를 이용한 연결리스트로 bfs를 구현하면 될 줄 알았다. 하지만 처음에는 중복값이 연결리스트에 들어왔고, 그래서 풀지 못했다. 그래서 인접 행렬을 이용해서 풀었더니 메모리 초과가 발생했다. 그래서 그 다음에는 map 을 이용해서 간선의 중복을 없애고 풀었지만, 시간초과가 발생했다. 그래서 다른 분들 풀이를 보니, 너무나 쉽지만 생각지 못했던, 하이퍼 튜브를 정점으로 만들어서 연결해주는 방법을 사용했다. (기존 노드 말고 새로운 더미 노드를 생각해내는 방법을 잊지말자!) 그렇게 문제를 풀게 되면 하이퍼 튜브를 거쳐 가기 때문에, 한 정점에서 다른 정점으로 이동하는데 2만큼이 필요하게 된다. 그래서 마지막 답을 구할 때, 최단 거리를 2로.. 더보기
1058번 1058번 - 친구 처음에 문제를 읽고 무슨말인가 했지만 그냥 어떤 한 정점에서 거리가 2이하인 값들의 총 갯수들 중에서 최대값을 구하는 문제였다. 그래서 모든 정점을 비교할 필요가 있었기 때문에 플로이드 알고리즘을 이용했다. 그리고 마지막에 자기 자신으로 가는 값을 하나 빼줬다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include using namespace std; int D[51][51];const int INF = 987654321;int main(){ int n; scanf("%d", &n); for (int .. 더보기
5567번 5567번 - 결혼 그래프 문제, 음의 가중치가 없고, 모든 간선의 가중치가 동일하기 때문에 BFS를 이용해서 문제를 풀 수 있었다. 친구의 친구까지 결혼식에 초대할 수 있으므로, 1번 정점에서 가중치가 2이하인 것들 중, 방문할 수 없는 것들은 제외한 값을 출력하였다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include#include#includeusing namespace std; int main(){ int n, m; scanf("%d %d", &n, &m); vector v(n + 1); while (m--) { int a, b; scanf("%d %d", &a, .. 더보기

반응형