SWEA
[python] SWEA - 1868. 파핑파핑 지뢰찾기
문제 해결 1. D4 | BFS 2. 클릭이 가능한 부분('.')을 찾아서 클릭을 할지 말지 결정한다 (1) 주변(8방향)에 지뢰가 한개도 없다면 클릭! (2) 하나라도 있으면 건너 뛴다 3. 클릭을 했다면 그 지점의 주변에 지뢰가 아닌부분을 가지고 BFS탐색을 한다. (1) 주변지점을 기준으로 또 그주변에 지뢰가 없으면 계속 퍼져나가면서 탐색한다 (2) 지뢰가 하나라도 있으면 그 지점은 더 나아가지 못한다. 4. 클릭 했을 때 마다 카운트를 세어주고 5. 나머지 클릭이 안된부분을 찾아서 더해주면 끝 💨 처음에 주변에 지뢰가 하나도 없는 지점을 다 찾아놓고 시작하려 했지만 시간이 오래걸릴 거 같아 찾으면서 가는 방식을 선택했다. 다 풀고보니 그렇게 해도 될거같다. 소스 코드 from _collection..
[python] SWEA - 5550. 나는 개구리로소이다
문제 해결 1. D4 | 카운팅을 조건에 맞게 잘해주는 것 2. 주어진 울음소리를 하나하나 담을 수 있는 배열이나 딕셔너리를 만들고 하나하나 더해준다. 3. 울음소리가 완성됐을 때(croak가 1 이상일 때) 다음에 c가 나온다면 c는 이전 울음소리의 반복이므로 -1 해준다. (🔼🔼🔼이 문제의 핵심 🔼🔼🔼) 4. 문제가 없다면 카운팅된 숫자가 전체 개구리의 숫자이지만 5. 울음소리의 순서가 맞지 않거나, 완성이 불가능한 울음소리라면 -1로 답을 출력해주면 된다. 💨 처음 문제 풀 때 울음소리 하나가 완성되면 이전까지 나와있는 c의 갯수로 카운팅을 했었는데 정답이 아니다 (50개 맞음) 여기서 중요한건 패턴인데 울음소리가 완성되고 다음에 c가 나온다면 (바로 다음이 아니더라도) 그것은 이전 개구리 울음소리..
[python] SWEA - 7465. 창용 마을 무리의 개수 / 10200. 구독자 전쟁
1. 창용 마을 무리의 개수 문제 해결 D4 | DFS, BFS, 그래프 1. 주어진 정보로 인접리스트를 만든다. 2. 보통의 그래프 탐색이라면 시작점하나로 BFS나 DFS 탐색을 하고 끝나지만 여기서는 모든 노드를 탐색해야 하므로 3. BFS탐색을 하는 while문을 for문으로 감싸서 모든 노드를 탐색한다. 4. for문을 통해 큐에 들어가는 노드는 한 무리의 시작점이므로 카운트를 세어준다. 🌦 처음 실패는 while 문 안에 for 문을 넣어 시간초과가 났다는 것이다. 여기서 for 문을 바깥으로 꺼내주고 시간초과는 해결, 두번째 실패는 for문을 N까지 돌려서 났다. N+1로 고쳐서 통과했다. 소스 코드 from _collections import deque for tc in range(1, 1 ..
[python] SWEA - 6959. 이상한 나라의 덧셈게임 / 6485. 삼성시의 버스 노선
1. 이상한 나라의 덧셈게임 문제 해결 D4 | 수학? 1. 무언가 규칙이 있을 것만 같은 문제이다. 2. "서로 최선을 다해 게임을 한다고 할 때" 여기에서 많은 고민을 했을 것이다. 최적의 방법을 생각하기 위해 3. 하지만 그런거 없다. 숫자가 정해진 순간 어떻게 하던지 답은 정해져 있다. 4. 스택을 만들어 숫자를 하나하나 넣는다. 5. 숫자를 두개씩 꺼내어 더해준다. 6. 더해진 숫자가 두자리이면 쪼개서, 한자리이면 그대로 다시 스택에 넣어준다. 이 때 카운트를 하나씩 세어준다. 7. 스택에 남은 숫자가 1개가 될 때까지 반복한다. 8. 카운트가 짝수이면 B의 승리, 홀수이면 A의 승리 🌦 여러가지 경우의 수를 따져 본 결과 어떤 순서로 하던지 결과는 바뀌지 않는다. 소스 코드 for tc in ..
[python] SWEA - 7701. 염라대왕의 이름 정렬
문제 해결 1. D4 - 정렬 2. sorted를 사용하면 쉽게 해결할 수있다 3. 먼저 이름의 길이순으로 정렬하고 4. 두번째로 이름의 길이가 같을 때 이름의 알파벳 순서대로 정렬한다. ✌ sorted() 함수에 대해서 알아보자. sorted 함수는 배열을 정렬하는 기능을 가지고 있다. 이 함수를 기본값으로 쓰게 되면 정렬된 배열을 반환한다. a = [6, 3, 4] b = sorted(a) # 첫번째 인자로 정렬할 리스트를 넣어준다. print(b) # [3, 4, 6] sorted의 두번째 인자로는 정렬하는 방법을 설정할 수 있다. 기본값으로는 우리가 흔히 알고 있는 1,2,3 a,b,c 오름차순 정렬이다. a = [(1,5), (2, 4), (2, 3)] print(a) # [(1, 5), (2,..
[python] SWEA - 4613. 러시아 국기 같은 깃발
문제 해결 1. D4 | 경우의 수 2. 각 라인에서 화이트, 블루, 레드 각각의 색으로 바꿀 때 필요한 횟수를 리스트 형태로 저장한다. (2중 배열) 3. 화이트와 블루로 색칠할 라인 수를 정하면 레드는 저절로 정해진다. 화이트와 레드는 0부터, 블루는 1부터 4. 색칠할 라인수를 정했으면 2번에서 저장한 지정한 색으로 바꿀 때 필요한 횟수를 더해준다. 5. 여러가지 경우의 수가 나오므로 min을 활용해 최소값을 찾아준다. 6. 최솟값을 찾았으면 마지막에 맨 윗줄을 화이트로 바꾸고, 맨 아랫줄을 레드로 바꾸는 횟수도 더해준다. 💨 3가지 경우 밖에 없어 포문으로 모든 경우의 수를 구해줬다. 경우의 수를 찾는 방법이 중요한 것 같았다. 소스 코드 for tc in range(1, 1 + int(input..