분류 전체보기 241

[Python] SWEA 1220번 Magnetic

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 나의 풀이 위에 있는 자석이 1, 아래에 있는 자석이 2이므로 열이 아닌 행을 기준으로 탐색하면서 다른 극을 만나면 교착상태에 빠지는 횟수를 카운트 해준다. 위에있는 자석이 N극이므로, 제일 위에 있는 행에 S극이 있다면, 테이블 밖으로 떨어질 것이므로, 행을 탐색할 때 처음 값이 N극인 경우를 탐색해야한다. N극인 경우 flag값을 1로 바꾼 후, 같은 열의 다른 행에서 S극을 만났다면 교착상태로 카운트 하고, flag를 다시 0으로 바꿔준다. 위 과정을 반복한 후, 출력형식에 맞게 교착상태로 카운트 된 횟수를 출력한다. 코드 for tc in range(..

[Python] SWEA 1215번 회문1

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 (함수사용) 회문을 탐색하는 함수를 만들어 가로 회문을 탐색한다. 행기준으로 문자리스트를 다시 생성하여 회문 탐색한다. 가로와 세로 기준 회문 개수 더해서 형식에 맞게 출력한다. 코드 # 가로 회문찾기 def find_width_palindrome(word_list): cnt = 0 for i in range(8): for j in range(8 - word_len + 1): word = word_list[i][j:j+word_len] if word == word[::-1]: cnt += 1 return cnt for tc in range(10):..

[Python] SWEA 2805번 농작물 수확하기

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 마름모 형태로 덧셈을 진행해나가기 위해 먼저 길이의 중간값을 구한다. 마름모의 모양은 대칭형태 이므로, 중간값까지 for문을 돌면서 현재 행의 더해줘야 하는 값들과 대칭되는 행의 값들을 같이 더해나간다. 열의 값은 가운데 위치에서 for문 내 i값 만큼 빼고 더한 값을 구해 그 범위만큼 연산한다. 위 연산 수행 중 중간값이 두 번 더해졌으므로, 모든 값들을 더한 값에서 가운데 행의 모든 값들을 더한 값을 빼준 후, 형식에 맞게 출력한다. 코드 t = int(input()) for tc in range(t): n = int(input()) array..

[Python] 백준 2812번 크게 만들기

문제 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000) 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다. 출력 입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다. 입력 예제 4 2 1924 7 3 1231234 출력 예제 94 3234 문제 풀이 수를 가장 크게 만드려면 맨 왼쪽에 가장 큰 수가 와야하고, 배열을 사용하여 각 값에 접근하고 지우면 시간 초과가 날 수 있으므로 스택을 사용하여 해결한다. 숫자를 문자열 리스트로 저장한 후, 하나씩 꺼내보면서, stac..

[Python] SWEA 1873번 상호의 배틀필드

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 이동하기 편하도록 전차의 방향, 이동 방향, 이동하는 방향에 따른 좌표들을 저장한다. 전차가 있는 곳이 시작하는 위치이므로, 시작위치와 전차의 방향을 구한다. 그 후, 크게 포탄을 발사하는 경우와, 포탄을 발사하지 않고, 이동하는 두 가지 경우로 나눈 후, 포탄을 발사하는 경우, 벽돌과 강철에 부딪히는 경우 처리 해준다. 벽돌에 부딪히는 경우 벽돌 부분을 평지로 바꾼 후, break 해줘야 하고, 강철에 부딪히는 경우 아무런 일도 일어나지 않으므로, 그냥 break 해 줘야 한다. 포탄을 발사하지 않는 경우는 이동 방향에 따라 이동한 후, 이동을 ..

[Python] SWEA 1240번 단순 2진 암호코드

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 문제를 해결하기 위해 필요한 암호의 규칙은 일단 모든 암호값이 1로 끝나고, 암호 안에 1이 한 번도 없는 암호가 없다는 점이다. 따라서 암호를 해독하기 위해 필요없는 행과 열의 값들을 모두 삭제한다. 행은 1이 한번이라도 등장하는 곳을 빼고 모두 잘라내고, 열은 마지막 1을 가지는 인덱스 값을 구해 마지막 인덱스까지 열의 길이가 56이 될 수 있또록 자른다. 그 후 해독해야하는 암호들만 남아있는 문자열을 사용하여 문자를 7개씩 잘라가며 해독하여 해독한 값을 새로운 배열에 모두 저장한다. 그 후 암호 검증과정에 따라 인덱스가 홀수인 경우 3을 곱하..

[Python] SWEA 1208번 Flatten

문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 최대높이와 최저높이의 인덱스를 찾아 최대 높이의 값을 최저 높이에 옮긴다. 찾은 최대높이 값은 -1, 찾은 최저 높이 값은 +1 위 과정을 움직여야하는 횟수만큼 반복 한 후, 모든 덤프 작업이 끝났을 때의 최댓값과 최솟값을 찾아 그 값의 차이를 출력한다. 코드 # 최저높이 찾기 def find_min_height(): min_height = 101 min_idx = 0 for i in range(len(box)): if box[i] < min_height: min_height = box[i] min_idx = i return min_idx # 최대..

[Python] 백준 1543번 문서 검색

문제 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 입력 첫째 줄에 문서가 주어진다. 문서의 길이는 최대 2500이다. 둘째 줄에 검색하고 싶은 단어가 주어진다. 이 길이는 최대 50이다. 문서와 단어는 알파벳 소문자와 공백으로 이루어져 있다. 출력 첫째 줄에 중복되지 않게 최대 몇 번 등장하는지 출력한다. 입력 예제 ababababa aba a a a a a a a 출력 예제 2 2 문제 풀이 비교되는 문자열과 비교하는 문자열이 같다면, 비교하는 문자열의 길이만큼 인덱스를 증가시켜 탐색하고, 같지 않다면 인덱스..

[Python] SWEA 10570번 제곱 팰린드롬 수

문제 숫자의 범위가 주어질 때 그 숫자와, 그 숫자의 제곱수가 모두 팰린드롬인 수의 개수 구하기 나의 풀이 숫자의 범위까지 하나씩 탐색하면서 그 숫자가 팰린드롬일 경우 그 숫자의 제곱수 또한 팰린드롬인지 체크한 후, 팰린드롬인 경우 카운트 코드 import math n = int(input()) for tc in range(n): a,b = map(int,input().split()) cnt = 0 for i in range(a, b + 1): # 두 자리수 넘을 때 앞 뒤 팰린드롬인지 확인 str_i = str(i) palindrome = True str_len = len(str_i) if str_len == 1: palindrome = True elif str_len >= 2: for j in ran..

[Python] 백준 2304번 창고 다각형

문제 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 입력 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 빈 칸을 사이에 두고 주어진다. L과 H는 둘 다 1 이상 1,000 이하이다. 출력 첫 줄에 창고 다각형의 면적을 나타내는 정수를 출력한다. 입력 예제 7 2 4 11 4 15 8 4 6 5 3 8 10 13 6 출력 예제 98..