Stay Hungry Stay Foolish

분류 전체보기 423

[TIL] 2024년 11월 14일

파이썬TypeError: slice indices must be integers or None or have an __index__ method타입이 맞지 않아서 발생한 에러이다. 다음은 위 에러가 난 코드이다. N = info[0]for i in info[1:N:2]: ...현재 N은 str 형이다. 그래서 slice 를 사용하려고 할 때 에러가 난 것이다.슬라이싱 할 때는 int 타입만 넣을 수 있다. 해결 방법N = int(info[0])int 형으로 변환하면 에러가 나지 않는다.📜 작성한 게시글[SWEA 코딩테스트 3260. 두 수의 덧셈] 👉 https://dev-cloud.tistory.com/409 [SWEA 코딩테스트 4047. 영준이의 카드 카운팅] 👉 https://dev-clou..

TIL 2024.11.15

[SWEA] 3975. 승률 비교하기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 테스트 케이스마다 출력하지 말고 결과를 모아서 한번에 출력하기 (시간 초과 문제) 테스트 케이스 번호와 함께 리스트에 담는 방법results.append(f"#{test_case} DRAW") 저장한 결과를 개행문자와 함께 출력하는 방법print("\n".join(results))SolutionT = int(input()) # 테스트 케이스 수results = [] # 결과를 저장할 리스트for test_case in range(1, T + 1): A, B, C, D = map(int, input().split()) al..

SWEA 2024.11.15

[SWEA] 9280. 진용이네 주차타워 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법주차장과 대기열 설정주차장 리스트, 대기열 리스트, 주차 요금을 저장할 리스트를 생성한다.차량 입출차 처리차량이 입차할 때(car > 0)주차장에 여유가 있는 경우(0 in parking) 비어있는 첫 번째 주차 공간에 차량을 저장하고 요금을 계산한다.주차장이 가득 찬 경우(0 not in parking) 해당 차량을 대기열 리스트에 추가한다.차량이 출차할 때(car 주차장 리스트에서 나가는 차량의 인덱스를 찾아 해당 공간을 비운다. (index() 사용)해당 공간을 0으로 만든다.대기 중인 차량이 있는 경우, 대기 차량 중 가장 먼저 대기..

SWEA 2024.11.14

[SWEA] 16800. 구구단 걷기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 약수 이용하기 N 이 10 일 경우 최소 이동 경로는 다음과 같다. 아래 그림은 곱셈표이다.  2와 5는 10의 약수와 같다. 따라서 10의 약수를 구해야 하는데, 두 수의 곱의 차가 가장 작은 i와 j 를 구해야 한다. (1, 1) 에서 (2, 5) 까지 가려면, i는 2가 되어야 하고, j는 5가 되어야 한다. i ➜ 2 - 1 = 1j ➜ 5 - 1 = 4 따라서 답은 1 + 4 = 5 이다.SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): N = ..

SWEA 2024.11.14

[SWEA] 4047. 영준이의 카드 카운팅 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법카드 입력 분할 및 초기화S, D, H, C = [0]*13, [0]*13, [0]*13, [0]*13S, D, H, C의 네 가지 무늬에 대해 각각 13칸짜리 리스트를 만든다.각 리스트는 13개의 인덱스를 가지며, 각 인덱스는 카드 번호(1~13)에 대응되도록 한다.카드 읽고 카운팅 for i in range(0, len(card), 3): shape = card[i] # 카드 종류 num = int(card[i + 1:i + 3]) # 카드 수 ...카드 입력 문자열을 3글자씩 슬라이싱해 카드의 ..

SWEA 2024.11.14

[SWEA] 1873. 상호의 배틀필드 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.comSolution# 방향에 따른 전차 모양 및 이동 (북, 남, 서, 동)tank_direction = {'^': 0, 'v': 1, '': 3}direction_symbols = ['^', 'v', '']dx = [-1, 1, 0, 0] # 상, 하, 좌, 우 이동 (북, 남, 서, 동)dy = [0, 0, -1, 1]# 명령어 수행def execute_commands(H, W, game_map, commands): # 전차 위치 찾기 for i in range(H): for j in range(W): i..

SWEA 2024.11.13

[SWEA] 10580. 전봇대 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 전선이 교차하려면 서로 다른 두 전선 (x, y)와 (i, j)에 대해, 다음 조건이 성립해야 한다.x j (왼쪽 끝점은 더 왼쪽에 있지만, 오른쪽 끝점은 더 아래쪽에 있음)또는 x > i 이면서 y  입력 받기각 전선의 (A, B) 좌표를 리스트 a, b에 각각 저장한다.교차 조건 체크각 전선 (x, y)와 다른 전선 (i, j)의 좌표를 비교하여, 교차 조건이 성립하는지 확인한다.교차 조건이 성립할 때마다 result 값을 증가시킨다.출력하기각 테스트 케이스에 대한 result 값을 출력한다.SolutionT = int(input..

SWEA 2024.11.13

[SWEA] 6485. 삼성시의 버스 노선 (Python/D3)

[문제 링크] 👇  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법버스 정류장 배열 초기화bus 배열을 초기화하여 각 정류장의 버스 노선 수를 0으로 설정한다.정류장의 번호는 문제에서 최대 5,000까지 가능하므로 배열의 크기를 5,000으로 지정한다.노선 정보 입력 및 정류장 누적각 버스 노선의 시작 정류장 A와 끝 정류장 B가 주어지면, 해당 범위 내 모든 정류장의 값을 1씩 증가시켜, 각 정류장이 포함된 버스 노선의 개수를 누적한다.특정 정류장 개수 계산이후에 특정 정류장에 대해 지나가는 버스의 수를 확인하기 위해 P개의 정류장 번호를 입력받고, bus 배열에서 해당 인덱스 값을 result 리스트..

SWEA 2024.11.13

[SWEA] 5789. 현주의 상자 바꾸기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법.상자 리스트 초기화각 테스트 케이스마다 크기가 N인 리스트 box를 0으로 초기화하여 만든다. 이 리스트는 각 구간의 값을 저장하는 역할을 한다.구간에 값 할당Q개의 구간 입력을 반복해서 처리한다.각 구간에 대해 L부터 R까지 반복문을 돌며, 현재 구간 번호 i 로 리스트의 해당 구간 요소들을 업데이트한다.결과 출력리스트 box의 값들을 문자열로 변환해 공백으로 구분하여 출력한다.SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): N, Q = map(int, ..

SWEA 2024.11.13

[TIL] 2024년 11월 11일

파이썬단어 중복 체크 시 시간복잡도 list vs set 자료구조리스트에서의 in 연산은 O(n)의 시간이 소요되고, set 자료구조는 O(1)의 시간이 소요된다. 따라서 중복 체크 시 set를 사용하여 코드를 작성하는 것이 더 효율적이다.  📜 작성한 게시글[Programmers 코딩테스트 L2. 짝지어 제거하기] 👉 https://dev-cloud.tistory.com/398 [Programmers 코딩테스트 L2. 카펫] 👉 https://dev-cloud.tistory.com/399 [Programmers 코딩테스트 L1. 푸드 파이트 대회] 👉 https://dev-cloud.tistory.com/400 [Programmers 코딩테스트 L2. 점프와 순간 이동] 👉 https://de..

TIL 2024.11.12

[Programmers] L1. [1차] 비밀지도 (Python)

[문제 링크] 👇  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법입력받은 배열을 한 줄씩 순회하며, arr1과 arr2에서 동일한 위치에 있는 숫자 i와 j를 함께 다룬다.i와 j를 각각 n자리 이진수 문자열로 변환한다. 여기서 i를 이진수로 바꾼 후, n자리 형식으로 맞추기 위해 0을 앞에 추가해 준다.변환한 두 이진수 문자열을 한 자리씩 비교같은 위치에 있는 두 비트 값이 둘 중 하나라도 1이면 해당 위치를 #으로, 둘 다 0이면 공백으로 바꾸어 bin_str에 추가bin_str이 완성되면 한 줄의 지도가 생성된 것이므로, 이를 answer에 추가모든 줄에 대해 반복한 후 answer를 ..

[Programmers] L2. 영어 끝말잇기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법💡 탈락 조건 : 같은 단어인 경우, 끝말잇기가 성립이 안 되는 경우 게임 진행 정보 초기화몇 번째 게임(라운드)인지 저장할 변수와, 현재 차례를 저장할 변수를 생성한다.두 번째 단어부터 순회하므로 모두 1로 설정한다.현재 단어의 첫 글자와 비교하기 위해, 직전 단어의 마지막 글자를 저장하기 위한 변수를 생성한다.첫 번째 단어의 마지막 단어를 저장한다.중복 여부를 확인하기 위해 사용된 단어를 저장할 리스트를 생성한다. (set 를 사용하는 것이 효율적이다.) 맨 처음 인덱스에 첫 번째 단어를 저장한다.단어 리스트 순회차례가 사람..

[Programmers] L2. 점프와 순간 이동 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법💡 짝수와 홀수를 구분하고, 순간이동은 2배만큼 하므로 2로 나누기 N이 6이라고 할 때, 다음 그림과 같다. 파란색 숫자는 순간이동을 한 위치이다.순간이동을 할 때 2의 배수만큼 움직이므로 2로 나누는데, 이때 홀수와 짝수를 구분한다.홀수이면 -1 을 한 후에 2로 나눠야 하는데, 이 과정이 jump를 한 것과 같다.따라서 홀수일 때만 -1 을 해주고 jump 횟수를 카운트 해준다.Solutiondef solution(n): ans = 0 while n > 0: if n % 2 != 0: ..

[Programmers] L1. 푸드 파이트 대회 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법💡 2로 나누기 주어진 음식의 양을 두 사람에게 나누어 주어야 하므로 2로 나눈다.  2로 나눈 몫만큼 음식을 순서대로 배치하면 된다. 입력 예시[1, 7, 1, 2]0번째 인덱스는 물의 양이고, 물은 항상 1이므로 신경 쓰지 않는다.1번째 인덱스부터 음식의 양이 주어진다.1번째 인덱스를 2로 나눈 몫은 3이다. 이 말은, 7개의 음식을 3개씩 나누어서 두 사람에게 줄 수 있다는 말이다. 따라서 1을 3만큼 저장한다.2번째 인덱스는 2보다 작으므로 두 사람에게 나누어 줄 수 없다. 따라서 무시한다.3번째 인덱스를 2로 나눈 몫은..