-
SW Expert Academy D2 문제 풀이알고리즘 2023. 6. 28. 19:37728x90반응형SMALL
1959 두 개의 숫자열
두 개의 숫자열이 주어질 경우 길이가 짧은 배열을 움직여 마주보는 숫자를 곱한 값의 합이 가장 큰 경우를 구하는 문제입니다.
이 문제는 모든 값을 모두 대조해봐야된다고 생각했으므로 숫자열이 마주칠 수 있는 모든 경우의 수를 탐색할 수 있도록 했습니다.
모든 경우의 수에서 마주보는 숫자 곱의 합의 최대값을 구할 수 있도록 했습니다.
1974 수도쿠 검증
완료한 수도쿠가 주어졌을 경우 해당 수도쿠가 성공했는지 실패했는지 확인하는 문제입니다.
이중 for문을 이용하여 해결했습니다.
가로와 세로는
sudoku[i][j]
,sudoku[j][i]
에 1~9의 숫자가 존재하는지 확인하면 됩니다.3*3격자는
sudoku[(i//3)*3+j//3][(i%3)*3+j%3]
에 1~9가 모두 존재하는지 확인하면 됩니다.1~9 모두가 존재하는지 확인하는 방법은 set를 이용했습니다. 해당 칸에 존재할 수 있는 숫자는 1~9이므로 중복되는 숫자가 존재할 경우 set의 길이가 9보다 작아지므로 set의 길이가 9가 아닌 경우 해당 수도쿠는 실패한 경우입니다.
1961 숫자 배열 회전
2차원 숫자 배열이 주어질 경우 해당 배열을 90도 180도 270도 회전시킬 경우 나타나는 배열을 출력해주는 문제입니다.
각 회전 시킬 때 바뀌는 원소의 위치를 인덱스 i, j로 나타내 줍니다.
90도 → array[N-1-j][i]
180도 → array[N-1-i][N-1-j]
270도 → array[j][N-1-i]
바뀌는 인덱스에 대한 식을 구할 때, 90도 회전과 270도 회전을 반대로 구했었습니다.
array[i][j]
가 이동한 위치에 대해 구했어야 했는데 이동한 위치에서array[i][j]
로 이동하는 것으로 잘 못 생각하여 반대로 구하게 되었습니다. 그래서 270도 회전과 90도 회전을 교체해줌으로써 해결했습니다.12712 파리퇴치
N*N 배열이 주어지고 스프레이를 +모양과 x모양으로 길이 M만큼 뿌릴 수 있을 때, 스프레이를 뿌려서 한 번에 잡을 수 있는 최대 파리수를 구하는 문제입니다.
우선 스프레이를 뿌릴 수 있는 위치는 N*N 번 반복해주어야 합니다.
- +모양으로 뿌릴 경우 [-1, 0], [0, -1], [0, 1], [1, 0] 4방향으로 스프레이가 뿌려집니다.
- x모양으로 뿌릴 경우 [-1, -1], [-1, 1], [1, -1], [1, 1] 4방향으로 스프레이가 뿌려집니다.
스프레이를 뿌리는 중심으로부터 각 방향의 인덱스 값을 더해주면 됩니다.
M이 2보다 크다면 해당 방향으로 더 스프레이가 뻗어나가게 됩니다. 그럴 경우 각 방향에 *m을 해주면 해당 위치로 이동할 수 있게 됩니다.
예) [-1, 0] 방향으로 뻗어간다면 [-1, 0] * 2 = [-2, 0] 이 됩니다.
i, j (0≤i<N, 0≤j<N)에 스프레이를 + 혹은 x 모양으로뿌렸을 경우 잡을 수 있는 최대 파리 수를 구해줍니다.
1204 최빈수 구하기
이번 문제는 점수 리스트가 주어졌을 경우 최빈수를 구하는 문제입니다. 최빈수가 여러개일 경우 가장 높은 점수를 출력하는 문제입니다.
파이썬을 이용해 풀 경우 딕셔너리를 이용했습니다. 점수 리스트를 반복문을 통해 순회하면서 해당 점수가 딕셔너리에 없을 경우 딕셔너리에 키값은 해당 점수로 밸류값은 0으로 만들어주고 1을 더해줍니다. 점수를 순회하면서 딕셔너리의 해당 점수 키값을 1씩 더해주는 식으로 진행하여 각 점수의 개수를 세줍니다.
answer = \[0, 0\]
( answer[0]=최빈수, answer[1]=개수) 를 선언해주고, 딕셔너리의 키, 밸류값을 순회하면서 최빈값을 구해줍니다.반응형LIST'알고리즘' 카테고리의 다른 글
SW Expert Academy 1868. 파핑파핑 지뢰찾기 (D4) (2) 2023.07.05 SW Expert Academy D4 문제 풀이 (1) (0) 2023.07.04 백준 1339 단어 수학 (0) 2023.06.27 백준 7576번 토마토 (2) 2023.06.26 백준 2252번 줄 세우기 (0) 2023.04.30