목록분류 전체보기 (62)
혼종 꼬지마루
포스텍에서 취업준비생 AI, BigData 교육에 참여하면서 메인 프로젝트를 진행하게 되었다 9월 초에 시작했지만, 이제 시작 후기를 올리는 것은 동원훈련(마지막 동원훈련 ㅎㅎ)과 중간에 주제를 바꾸어야 하는 문제점이 있었기 때문 처음 2주정도는 'AI심리상담가'라는 주제로 방향을 잡고, 첫 주 발표 후 교수님의 기대를 부풀게 하면서 순조롭게 진행이 되는가 싶었다 하지만 2주차 발표 때 문제점을 지적받으며 주제를 바꾸게 되었다 지적받은 문제는 1. 어떻게 심리상담에 대한 데이터를 수집시켜서 학습을 시킬 것 인가? 이 문제점은 명확하게 힘들다고 말할 수 있었다. 일단 정신과 상담내역이나 심리상담 내역을 통해 데이터를 추출해야 하는데 과연 어떤 병원이나 상담소에서 자료를 내어 줄 것인가... 2. 답변을 정..
https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo (이 글이 문제가 될 시 삭제하도록 하겠습니다.) '정말 삼성스러운 문제였다'라고 생각했습니다. 이전에 올렸던 벽돌깨기, 보물상자 비밀번호도 같은 생각이 들었습니다. '출발 위치와 진행 방향을 임의로 선정가능'이라고 제시되어 있기 때문에 핀볼이 놓일 수 있는, 즉 아무런 장애물도 없는 곳에서 모든 방향으로 진행시켜보며 조건만 잘 걸어주면 해결 가능 저는 귀찮아서 그냥 모든 조건을 세부화 시켜서 걸어주었지만, 더 고수분들은 짧게 짰을 것 같다(저도 평균적으로는 긴편은 아니긴 했지만...) 1234567891011121314151617..
https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo (이 글이 문제가 될 시 삭제하도록 하겠습니다.) 기출문제인 톱니바퀴처럼 문자열을 돌려주면 쉽게 해결 할 수 있는 문제 일단 입력되는 문자열을 N/4만큼씩 잘라서 검사를 해 준다 map으로 문자열을 저장하면 하나의 문자열을 인덱스처럼 사용할 수 있기 때문 이 인덱스에 해당하는 문자열이 존재한다면 dab배열에 담지 않고, 없다면 잘라준 문자열을 16진수 -> 10진수로 바꾸어 dab 배열에 담아준다. 마지막으로 dab배열을 내림차순 정렬 후, K-1번째 숫자를 출력하면 끝 1234567891011121314151617181920212..
https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo(이 글이 문제가 될 시 삭제하도록 하겠습니다.) 시뮬레이션 카테고리로 올려두긴 했지만 DFS + BFS로 풀었다 먼저 구슬을 쏘는 순서를 DFS로 정해 준 뒤, BFS로 연쇄적으로 삭제한 아래로 내리는 순서로 해결했다 하지만 시간효율은 썩 좋지 않은 1.8s가 나옴 다른 사람들은 더 짧은 시간이 걸리는데 아마 내 코드 중에 맵을 카피하는 과정에서 시간을 많이 잡아먹은 듯 하다 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484..
BFS로 풀려다가 메모리초과랑 런타임이 오지게 난 문제 원래 아이디어는 BFS로 탐색 후 도착하면 그 경로를 역추적하여 마킹하는 과정을 전부 돌아봐주는 방법 map과 큐, check와 경로를 저장하는 배열까지 만들었으니 메모리가 초과날만 한듯 DFS로 풀기 두려웠던 것은 시간초과가 날 것 같다는 생각에 BFS로 했던 것인데 메모리라니... 결국 DFS로 풀었다 1. 시작점을 돌면서 DFS 탐색 시작 2. 갈 수 있는 위치면 체크하고 들어간다 3. 도착했다면 리턴하며 1을 반환 12345678910111213141516171819202122232425262728293031323334#include #include #define MX 10005using namespace std; char map[MX][50..
간단한 시뮬레이션 문제 O(S)면 끝나기 때문 입력받은 K 를 26으로 나눈 나머지로 바꿔 준다. 그리고 한 문자식 꺼내어 보며 k씩 올려준다. 이때 주의할 것은 소문자의 경우 k를 올려주면 아스키 코드값을 넘어가버린다. 중간에 한번 변환시키고 연산하면 바로 나옴 1234567891011121314151617181920212223242526272829303132333435#include #include #include #define MX 100002using namespace std; string str;int k, s; int main(void){ scanf("%d %d\n", &k, &s); getline(cin, str); k %= 26; for (int i = 0; i
간만에 원큐에 푼 문제라 기분이 너무 좋다... 그냥 재귀로 싹다 돌려줘도 되는 문제 물론 전체 포지션을 다 고려한다고 했을 경우에는 O(11^11)이라 밥먹고 오면 풀릴 시간이지만 문제 조건이 '한명당 적합한 포지션은 최대 5개'라는 조건이 붙어 있어서 O(5^11) 까지 줄어드는 문제 1234567891011121314151617181920212223242526272829303132333435363738394041#include #define SIZE 13using namespace std; int S[SIZE][SIZE];bool check[SIZE];int C, dab; void dfs(int d, int sum){ if (d == 11) { dab = dab > sum ? dab : sum; r..
dp를 처음 시작하면서 이 문제를 꼭 풀어보면 좋다고 생각하는 문제 dfs로 검사하며 return하는 과정에서 메모이제이션을 해주는 문제로 필수문제라고 생각 1. 맵정보를 입력받으며 dp를 -1로 초기화 2. dfs로 내리막길을 찾으며 탐색 그 위치에서의 dp는 방문한 것을 체크하기 위해 0으로 만든다. 3. 도착점에 도착하면 1을 반환한다. 4. 만약 방문한 점이고, dp가 -1이 아니라면 그 지점의 값을 반환한다. 123456789101112131415161718192021222324252627282930313233343536#include #define MX 503using namespace std; int map[MX][MX], dp[MX][MX];int dx[] = { 0, 0, -1, 1 };..
문제를 잘못 이해해서 한번 틀린 문제... 무작위가 아닌, '한줄로 이어 붙였을 때 사전 순서'라는 점에 초점을 맞추면 그다음 부터는 쉬워진다 입력을 받으며 x인 부분은 구조체 배열로 그 위치를 담아주고, A~L인 부분은 check해준다. 그다음 부터는 한 위치씩, 모든 경우의 수를 넣어주고 끝까지 넣고 난 후 조건에 맞으면 flag를 달아주고 출력하면 끝 조건을 검사하는 부분에서 따로 머리써서 단순화 시키기 보다는 그냥 무식하게 인덱스로 다 찾아서 더해줬다...ㅎ 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include #define MX 60using name..
https://www.swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AWKpmwua-VoDFAUV(이 글이 문제가 될 시 삭제하도록 하겠습니다.) 과거 삼성전자 SW Test A형을 딸 때 1시간 만에 풀었는데 복원문제라는 소문 듣고 풀어봤다 아주 살짝 더 쉬운 문제인데... 더 오래걸린... 이제 코딩아이디어가 빠르게 안되나보다... 1. SAMSUNG 문자열을 target배열에 각 문자의 갯수를 저장한다. 2. 그리고 나서 L, 면접관 이름, 점수 P를 입력받는다. 3. 조합으로 dfs탐색 이때 중요한 것은 check배열에 면접관의 이름에 있는 문자의 갯수를 더하고 빼주며 검사한다 4. 매번 검사하며, targ..