본문 바로가기

C30

[C] 1389: 케빈 베이컨의 6단계 법칙 일단 인접행렬로 그래프를 저장한다음에 for문을 이용하여 언제가 베이컨 수가 가장 작은지를 확인해봤다. 나아진 점1: 처음에 bfs를 돌릴때 queue에다가 먼저 놓고 bfs함수를 호출함으로써 dfs와 bfs를 섞어쓰던 실수를 없앴다! 나아진 점2: bfs함수에서 beacon_number을 구할때 따로 배열을 만들어 몇번째에 beacon_number에 넣었는지 저장해두었는데 이번에는 beacon_number[i]=beacon_number[tmp]+1; 를 사용하여 배열 2개로 저장하던걸 1개로 저장하여 효율성을 높였다. 나아진점 3: bfs 만드는 속도가 빨라졌고 continue의 사용을 적절히 했다! 그리고 그래프에서의 최단거리를 구할 때는 항상 BFS를 쓴다는 것을 잊어버리면 안된다!! #includ.. 2023. 8. 3.
[C] 14500: 테트로미노 이 문제는 효율적이게 풀 수 있는지는 모르겠지만 그냥 bruteforce로 풀었다. 하늘색 막대기는 2가지 경우의 수 노란색 막대기는 1가지 경우의 수 초록색 막대기와 분홍색 막대기는 4가지 경우의 수 주황색 막대기는 8가지 경우의 수가 있고 각각의 경우의 수 중에 최대 값을 구하면 됐다. 그리고 구역을 나누어서 최대한 for문의 개수가 적게 만들도록 노력했다. 사실 코드가 너무 길고 구현이 단순해서 쉽게 안풀릴 줄 알았는데 다행히 잘 풀렸다! 앞으로도 일단 그냥 코드를 짜보는 연습을 더 해야겠다 #include #include int arr[501][501]; int blue(int x_max,int y_max) { int max=0; int tmp; for(int j=1;jtmp3?tmp1:tmp3;.. 2023. 8. 1.