Algorithm Problem
[leetcode] Top K Frequent Elements
리트코드 문제: Top K Frequent Elements이 문제는 배열에서 자주 등장하는 k개의 요소를 찾는 문제입니다. 예를 들어, 배열 [1,1,1,2,2,3]과 k = 2가 주어진다면, 가장 빈번하게 등장한 숫자는 1과 2이므로 [1, 2]가 답이 됩니다.문제 분석이 문제는 배열의 각 요소가 몇 번 등장하는지를 계산하고, 그중에서 자주 등장한 k개의 요소를 추출하는 문제입니다.풀이 접근빈도 계산먼저 배열에서 각 숫자가 몇 번 등장했는지를 파악해야 합니다. 이를 위해 **해시맵(Map)**을 사용해 각 숫자의 빈도를 기록할 수 있습니다.빈도별 정렬각 숫자의 등장 횟수를 기준으로 배열을 정렬한 후, 그중에서 가장 빈번하게 등장한 k개의 요소를 추출하면 됩니다.코드 설명var topKFrequent =..
[leetcode] Longest Substring Without Repeating Characters
리트코드 문제: Longest Substring Without Repeating Characters이 문제는 주어진 문자열에서 중복된 문자가 없는 가장 긴 부분 문자열을 찾는 문제입니다. 예를 들어, 문자열 "abcabcbb"가 주어졌다면 "abc"가 가장 긴 부분 문자열로, 답은 3입니다.문제 분석주어진 문자열에서 중복되지 않은 문자가 포함된 가장 긴 부분 문자열을 찾는 것이 목표입니다. 즉, 중복 문자가 나타나면 이전에 찾았던 부분 문자열을 중단하고, 중복이 없도록 시작 위치를 다시 조정해야 합니다.풀이 접근이 문제는 슬라이딩 윈도우와 같은 방식으로 해결할 수 있습니다. 슬라이딩 윈도우는 문자열에서 특정 범위를 탐색하면서 중복된 문자를 만나면 그 범위를 조정하는 방식입니다.문자열을 탐색하면서 중복 체..
[python] SWEA - 12052. 부서진 타일
🤔문제 해결 쉬운 그리디 문제 이중 포문을 활용해서 격자의 타일을 하나씩 선택 깨진 타일을 만났을 때 오른쪽, 아래, 오른쪽아래대각선이 깨져있는지 확인 깨져있지 않다면 NO 또는 인덱스 에러가 발생하면 NO 깔끔하게 마무리 된다면 YES 💻소스 코드 T = int(input()) def is_right(grid): for i in range(N): for j in range(M): if grid[i][j] == '#': try: if grid[i + 1][j] == grid[i][j + 1] == grid[i + 1][j + 1] == '#': grid[i][j] = grid[i + 1][j] = grid[i][j + 1] = grid[i + 1][j + 1] = '.' else: return 'NO' ..
[python] SWEA - 4301. 콩 많이 심기
🤔문제 해결 O O X X O O O O X X O O X X O O X X X X O O X X O O X X O O O O X X O O O O X X O O O X X O X X O O X 위에서부터 아래로 한줄씩 내려가면서 규칙을 찾아보면위의 그림처럼 심는게 가장 경우의 수가 많게 심을 수 있다. 첫줄에서 오른쪽으로 4칸마다 2개씩 심을 수 있다 그리고 나머지칸이 3칸 - 2개 2칸 - 2개 1칸 - 1개 0칸 - 0개 두번째 줄도 위와 같다 세번째 줄은 앞의 두칸을 빼고 시작하여 위의 규칙을 적용 네번째도 세번째와 같다 다섯번째는 다시 첫번째처럼 결론은 1,2 | 3,4 | 5,6 | 7,8 | ... 짝지어서 하면된다. 💻소스 코드 def get_axis_per_count(num): count..
[python] SWEA - 4366. 정식이의 은행업무
🤔문제 해결 주어진 진수를 한자리 씩 다른것으로 바꿔주기 1101(2진수) => 0101, 1001, 1111, 1100 1221(3진수) => 0221, 2221, 1021, 1121, 1201, 1211, 1220, 1222 각 수에 대해서 10진수로 바꾸고 리스트(or 딕셔너리)에 넣기 2진수 먼저해서 다 넣어두고 3진수 변환할 때마다 이미 있는지 체크해서 있으면 break 답 출력 💻소스 코드 def convert_decimal(standard, num): converted_number = 0 for i in range(len(num)): converted_number += int(num[i]) * (standard ** (len(num) - i - 1)) return converted_numbe..
[python] SWEA - 3347. 올림픽 종목 투표
🤔문제 해결 조직위원회의 예산을 기준으로 재밌는 종목에서 재미없는 종목 순서대로 탐색 예산에 보다 적은 종목을 찾으면 투표하고 종료 모든 투표가 종료되면 득표수가 가장 높은 종목의 번호를 찾는다. 💨 SWEA 는 문제 난이도를 어떻게 💻소스 코드 T = int(input()) for test_case in range(1, T + 1): N, M = map(int, input().split()) events = list(map(int, input().strip().split())) managers = list(map(int, input().strip().split())) vote = [0] * N # 투표 수 for manager in managers: # 재밌는 종목(앞)에서 부터 차례로 예산보다 크면 ..