Algorithm/백준(BOJ)111 [ 파이썬(python) ] 백준 2667 - 단지번호붙이기 📌 백준 2667 - 단지번호붙이기 문제 설명 💡 나의 풀이 아침부터 저녁까지 이 문제만 잡고 늘어졌는데 드디어 풀었다. 😇 😇 특히, 처음에 방문한 좌표를 1로 선언한 이유와, 새로운 좌표를 1로 선언한 이유를 잘 몰라서 엄청 헤맸다. 이 문제는 BFS, DFS 파트에 약한 나에게 많은 도움을 준 문제다. 또, BFS와 DFS로 풀 수 있는데 지금은 BFS버전이고 내일은 DFS로 풀어봐야겠다. 푸는 방법으로 append와 flag방식 두 개로 나눠서 풀었는데 flag 실행시간이 append 보다 4ms정도 더 빨랐다.( 4ms면 별 의미 없는 시간차이긴 하지만, True, False가 근소하게 더 빠르다는 것을 참고적으로 알아두자!) 개별 단지수를 구하는 코드는 고민을 많이 했는데, 결론적으로 {}를 .. 2021. 4. 16. [ 파이썬(python) ] 백준 1260 - DFS와 BFS 📌 백준 1260 - DFS와 BFS 문제 설명 💡 나의 풀이 BFS와 DFS를 둘 다 사용해야 하는 문제인데 풀이 방법은 다음과 같다. 문제에서 정점 번호가 작은 것을 먼저 방문한다.를 통해 입력값을 인접리스트(adjacent list)으로 넣을 때 sort를 붙여 작은 값부터 들어가게끔 설정했다. dfs의 구현 순서는 다음과 같다. 처음 들어온 값 index의 flag를 True로 바꾼다. 만약, 인접 노드를 방문하지 않았다면(flag = False), 해당 인접노드로 들어가서 방문하지 않은 인접 노드가 없을 때까지 들어간다.(recursive) 재귀문을 탈출하면서 해당 값을 하나씩 출력한다. bfs의 구현순서는 다음과 같다. 처음 들어온 값을 queue에 넣는다. 처음 들어온 값 index의 fla.. 2021. 4. 16. [ 파이썬(python) ] 백준 13458 - 시험감독 📌 백준 13458 - 시험감독 문제 설명 💡 나의 풀이 문제가 생각보다 쉬워보는데?라고 했다가 정답률이 왜 25%인지 느낌이 왔다. 나는 이중 반복문으로 작성했고, 계산할 때마다 cnt가 1씩 증가하여 총 몇 명이 필요할까?를 계산했는데, 시간 초과판정이 났다. 😂 😂 이중반복문으로 풀려고 했다면 다른 방법을 생각해보자. student를 한 명씩 가져온다. 모든 시험장에 들어가야 하는 총감독관은 1명만 사용하고 부 감독관은 여러 명 사용해도 된다. 먼저, student에서 총감독관이 감시할 수 있는 응시자의 수를 모두 뺀다. 남은 응시자의 수에서 부감독관이 감시할 수 있는 응시자의 수로 나눈 몫을 사용한다. 이때, 나머지가 있으면 몫 +1, 나머지가 없으면 몫을 그대로 사용한다. 여기서 몫은 응시생들을.. 2021. 4. 14. [python] 백준 2445 - 별 찍기 8 📍 백준 2445 - 별 찍기 8 백준 2445 - 별 찍기8 ⚡️ 나의 풀이 예제 출력에서 가로로 2등분하고 풀면 쉽게 접근할 수 있다. 2등분했다는 이야기는 결국 반복문이 총 2개 사용된다는 이야기다. 여기서 세로로 2등분을 또 해보자. 이전의 별 찍기 문제들의 패턴과 유사한 모양들이 나온다. 예제 출력에서 패턴사이에 있는 공백을 생각해보자. 1번패턴을 보면 출력뒤에 공백이 존재한다는 점을 알 수 있다. 이전에 풀었던 별찍기 1, 2, 3을 보면 출력뒤에 공백이 존재하지 않는다. 이제 공백을 어떻게 줄건지 생각해보자. 공백이 자릿수만큼 정해진것이 아니고 i가 증가할때마다 공백이 줄어드는것을 볼 수 있다. 이를 코드로 구현하면 '*' * i + ' '*(n-i)가 될것이고 이를 반대로 작성하면 2번패턴.. 2021. 4. 5. [python] 백준 2442 - 별 찍기 5 📍 백준 2442 - 별 찍기 5 백준 2442 - 별 찍기5 ⚡️ 나의 풀이 올바르게 제출했다고 생각하는데 오답판정을 받았다. 왜냐하면 '*'뒤는 값이 없어야하는데 공백으로 채워진 '값'으로 처리됐기 때문이다. formatting 함수로 구현했는데, formatting함수는 값 앞뒤를 모두 공백으로 채워준다. 따라서 값 앞에만 공백으로 채울 수 있는 ' ' * (n-i)식을 사용하자. n = int(input()) for i in range(1, n+1): print(' ' * (n-i) +'*'*((2*i)-1)) 2021. 4. 5. 이전 1 ··· 18 19 20 21 22 23 다음