문제 https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 소스코드 arr = [] for i in range(9): arr.append(list(map(int, input().split(' ')))) m = 0 idx = 0 for i in range(9): for j in range(9): if m
전체 글
항공대 알고리즘 동아리 Koala 🥰https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 문제 소스코드 문제풀이 이 문제는 리스트와 pop(),append()를 이용해 풀었다. 문자열을 순회할 때 첫 문자는 무조건 리스트에 넣고, 그 이후는 리스트의 마지막 문자와 비교하여 같으면 pop() 아니면 append() 하여 반복문이 끝났을 때 리스트가 비어있으면 ans+=1 해주었다.
https://www.acmicpc.net/problem/12759 12759번: 틱! 택! 토! 승자가 결정되는 즉시 이긴 플레이어의 번호를 출력한다. 플레이어의 번호는 1 또는 2이다. 무승부라면 0을 출력한다. www.acmicpc.net 문제 소스코드 문제풀이 선공할 번호만 입력을 받기 때문에 후공 변수는 선공 번호 입력에 따라 따로 받아주었다. player가 체크할 때마다 리스트에 추가해주어 리스트를 완성시키고, 매겨변수로 player와 리스트를 받아 승리패턴이 나오면 player 번호를 리턴, 승리패턴이 나오진 않으면 0 리턴을 하는 함수를 만들어주었다. 함수의 리턴값을 flag 변수에 받아 0이 아니라면 flag를 출력하고 res변수에 flag값을 넣고 반복문이 끝난 후, res가 0이라면 ..
어떤 것을 pop 할지를 잘못 생각해서 삽질한 문제 스택에서 없애야 할 것 건물이 더 이상 확장할 수 없는 경우, pop 한다. 입력으로 들어온 Y가 스택의 상단 T보다 작다면, (Y < stack().top()) 높이 T를 가지는 건물의 범위는 거기서 끝나기 때문에, 더 이상 스택에 있을 필요가 없어진다. 스택에 넣지 말아야 할 상황 건물의 영역이 이어지는 경우, 스택에 push 하지 않는다. (Y == stack.top()) 입력으로 들어온 Y가 스택의 상단 T와 같다면 스택에 넣지 않는다. 고층 건물에 대한 정보가 삭제된 후, 바뀐 스택의 상단 T가 N과 높이가 같다면, 높이 N의 건물이 계속되는 형태기 때문에, 따로 카운팅을 할 필요가 없어진다. 스택에 넣어야 하는 상황 스택이 비어있을 때와, 입..
2828번: 사과 담기 게임 (acmicpc.net) 2828번: 사과 담기 게임 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M
7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 최종 코드 import sys input = sys.stdin.readline t = int(input()) ans = list() for i in range(t): n, m = map(int, input().split()) a = sorted(list(map(int, input().split())), key= lambda x:-x) b = sorted(list(map(int, input().split())))..
문제 분석 문제를 보면, 입력의 값이 엄청나게 큰 것을 확인할 수 있다. BruteForce를 사용하는 것은 불가능해 보이며, '정해진 총액 이하에서 가능한 한 최대의 총 예산'와 같은 말에서 이분 탐색의 향기가 솔솔난다. 상한액을 mid로 설정하여, 총예산 보다 큰 경우는 max 값을 mid - 1로 설정하여 상한액을 낮춘다. 총예산 보다 같거나 작은 경우는 min 값을 mid + 1로 설정하여 상한액을 높인다. 우리가 구해야 할 값은 max 값이므로 while 문이 끝나는 경우(min > max), max 값이 아닌 min 값이 움직이게 만든다. 남은 알고리즘은 일반적인 이분 탐색과 동일하게 구현하면 된다. 문제 풀이 import java.util.Scanner; public class Main { ..
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M×N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서 8×8 크기의 체스판으로 만들려고 한다. 체스판은 검은색과 흰색이 번갈아서 칠해져 있어야 한다. 구체적으로, 각 칸이 검은색과 흰색 중 하나로 색칠되어 있고, 변을 공유하는 두 개의 사각형은..
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고..
https://www.acmicpc.net/problem/2999 문제 매일 밤, 정인이는 상근이에게 이메일을 보낸다. 정인이는 자신의 이메일이 해킹당할 수도 있다는 생각에, 내용을 항상 암호화해서 보낸다. 정인이가 사용하는 암호 알고리즘은 다음과 같다. 정인이가 보내는 메시지는 총 N글자이다. 먼저, 정인이는 R
문제 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므로 진아는 다음해 식목일 부터 꽃길을 걸을 수 있다. 하지만 진아에게는 꽃의 씨앗이 세개밖에 없었으므로 세 개의 꽃이 하나도 죽지 않고 1년후에 꽃잎이 만개하길 원한다. 꽃밭은 N*N의 격자 모양이고 진아는 씨앗을 (1,1)~(N,N)의 지점 중 한곳에 심을 수 있다. 꽃의 씨앗은 그림 (a)처럼 심어지며 1년 후 꽃이 피면 그림 (b)모양이 된다. 꽃을 심을 때는 주의할 점이있다. 어떤 씨앗이 꽃이 핀 뒤 다른 꽃잎(혹은 꽃술)과 닿게 될 경우 두 꽃 모두 죽어버린다. 또 화단 밖으로 꽃잎이 나가게 된다..