Koala - 7기/기초 알고리즘 스터디

문제 https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 코드 def flood_fill(): global val check[i][j]=val q.append((i,j)) while q: x,y=q.popleft() for k in range(4): nx,ny=x+dx[k],y+dy[k] if 0
1. 문제 2. 풀이 코드 a,b=input().split("(^0^)") a_cnt=a.count('@') b_cnt=b.count('@') print(a_cnt,b_cnt) 3. 해설 -^0^을 기준으로 앞과 뒤의 잔상 수를 묻는 문제이다. - count()함수를 이용하여 @의 개수를 세어준다 !
https://www.acmicpc.net/problem/13565 13565번: 침투 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않 www.acmicpc.net 전형적인 bfs 문제풀이 방식으로 해결 가능하다. 다만 특징은, 첫번째 행에서 시작한 것이 마지막 행까지 도착하는 지를 체크해야한다. 다른 행에서 시작하는 것은 의미가 없다. bfs 문제라는 것을 파악 후, 생각없이 전형적인 bfs코드를 거의 다 썼을 때쯤 잘못된 것을 깨달았다. 보통의 문제라면 어느 행이든 상관없이 bfs 탐색을 시작해주면 됐는데, 이 문제는 ..
1110번: 더하기 사이클 (acmicpc.net) 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제분석 분류 수학 구현 문제설명 입력 출력 소스코드
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 소스코드 문제풀이 백트래킹 문제의 대표적인 문제라고 한다. 혼자 그림을 그려서 생각해보면 아 이런식으로 풀어야겠구나 라는 생각은 금방 들지만 재귀를 이용해서 구현하기 어려웠다.(백트래킹 문제는 많이 풀어보는 수밖에 없는거같다) 한 곳에 뒀을 때 퀸을 둘 수 있는 곳에만 두는 식으로 점점 숫자를 늘려가며, 어느 곳에도 퀸을 둘 수 없으면 이 곳에 두면 안된다고 체크하고 되돌려놓는 형태로 풀면 된다. (N과 M 풀때..
문제 https://www.acmicpc.net/problem/11383 11383번: 뚊 입력의 첫 번째 줄에 N, M (1 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄의 각 줄에는 M개의 문자가 주어진다. 다음 N개의 줄의 각 줄에는 2M개의 문자가 주어진다. 모든 문자는 영문 알파벳 대문자 혹 www.acmicpc.net 코드 풀이 N번동안 문자를 입력받고 M번동안 새로운 리스트에 두번 넣어서 늘린 문자와 똑같은 문자가 되게 만든다. if문을 사용하여 늘린 문자와 입력받은 문자가 같지 않을 경우 flag를 걸어서 확인한다.
https://www.acmicpc.net/problem/15351 15351번: 인생 점수 어떤 사람이 무엇을 즐기느냐에 따라 그 사람의 인생 점수를 측정할 수 있다. A를 1점, B를 2점, ... , Z를 26점으로 해, 즐기는 것의 이름의 알파벳 점수를 모두 더하면 된다. 예를 들어, "OTAKU LIFE" 는 www.acmicpc.net 문제분석 입력하는 문자열을 알파벳 순서대로 점수로 환산해 최종 합을 출력한다. 소스코드 n=int(input()) for i in range(n): a=input() score=0 for j in a: if j == " ": continue else: a_score=ord(j)-64 score+=a_score if score==100: print('PERFECT..
문제 풀이 일단 이 문제를 보면 저 같은 경우에 초가 아닌 분으로 계산하여 풀 경우를 생각해 보았습니다 그래서 초는 3600을 곱하여 푸는 경우보다는 일단 입력한 T값을 60으로 나누고 그걸 입력한 b값에 넣은 다음 a에 T를 60으로 나눈 몫을 더해줍니다. 그리고 나머지는 b에 저장하고 그리고 a가 24시간이 넘을 경우에는 뺴기 24를 해준 다음 a값에 저장하면 끝납니다. 문제 코드 a,b=map(int,input().split()) T=int(input()) b+=T if b>=60:a+=(b//60);b=b%60 if a>=24:a=a-24 print(a,b)
https://www.acmicpc.net/problem/8989 8989번: 시계 기원이의 방에는 시침과 분침으로 이루어진 아날로그 시계가 있다. 기원이는 시침과 분침이 형성하는 각도 중 작은 각도를 측정하는 것이 취미이며, 이 각도는 0보다 크거나 같고 180보다 작거나 www.acmicpc.net 5개의 시간(시계)을 입력받고, 시계의 시침과 분침이 이루는 각도 (두 각도 중 작은 각도)를 구해서 오름차순으로 나열한다. 5개 중 가운데(3번째) 위치하는 시간을 찾는 문제이다. 시침과 분침이 가리키는 각도를 계산하는 문제라고 할 수 있다. 코드가 많이 지저분하지만, 리뷰도 할겸 최초 제출 코드로 올려본다. 분침이 가리키는 각도는 그 숫자에 비례하기 때문에 쉽게 생각할 수 있고, 시침은 분과 연계해서..
1. 문제 5598번: 카이사르 암호 가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건 www.acmicpc.net 2. 코드 caesar = list(input()) for i in range(len(caesar)): re = ord(caesar[i]) - 3 if re < ord('A'): re += 26 caesar[i] = chr(re) print(''.join(caesar)) 3. 풀이 - 카이사르 암호는 알파벳을 3개씩 건너띄어쓴다. 복구할때는 기존의 알파벳 3개 전 알파벳을 대응한다. - 이때, 알파벳에 숫자..
2480번: 주사위 세개 (acmicpc.net) 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 문제 분석 분류 수학 사칙연산 문제설명 입력 출력 소스코드
문제 https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 코드 풀이 itertools 모듈을 사용하여 permutations 메소드를 선언하고 입력된N까지의 순열을 리스트에 저장한다. 순열을 출력할 때 map(str,t)을 다시 join으로 바꿔야 같은 형태로 프린트된다.
KauKoala
'Koala - 7기/기초 알고리즘 스터디' 카테고리의 글 목록