문제 링크 https://www.acmicpc.net/problem/7682 7682번: 틱택토 틱택토 게임은 두 명의 사람이 번갈아가며 말을 놓는 게임이다. 게임판은 3×3 격자판이며, 처음에는 비어 있다. 두 사람은 각각 X 또는 O 말을 번갈아가며 놓는데, 반드시 첫 번째 사람이 X를 놓고 www.acmicpc.net 문제 풀이 처음에는 유효하지 않은 경우를 가지치기 하는 방식으로 풀이하려 했지만, 생각보다 예외 케이스가 많았습니다. 이에 따라 유효한 케이스를 먼저 가지치기하는 방식으로 풀이했습니다. 게임판의 상태가 최종 상태일 경우 유효하다고 반환해야 합니다. 최종 상태로 가능한 경우는 이긴 플레이어를 기준으로 총 3가지로 세웠습니다. 1) X가 이긴 경우 : X의 개수가 O의 개수보다 1 많아야..
문자열
문제 링크 https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 문제 문제 풀이 아스키코드 관련 문제이다. 소문자, 대문자 나누어서 계산을 해주어 새 문자열을 만들어주고 각 문자열에 대해 종류를 벗어나는 것만 유의해주면 된다. s = input() result = '' for c in s: if 'a'
문제 링크 https://www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 문제 문제 풀이 파이썬의 유용한 함수들을 이용해 간단히 해결할 수 있는 문제이다. 문제의 범위가 주어지지 않았으므로 while을 사용할 경우 무한루프가 돌 수 있음에 유의하고 line이 없을 경우 break하도록 하여 무한루프를 제거한다. import sys while True: line = sys.stdin.readline().rstrip('\n') if not line: brea..
문제 링크 https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 문제 문제 풀이 앞 번호 문제에서 조금만 변형시키면 되는 문제이다. for문을 리스트의 인덱스에 대해 돌도록 설정하고, 결과 리스트를 변형할 때 기존 리스트의 인덱스로 대입만 해주면 된다. s = input() slist = list(s) list = [-1 for i in range(26)] for i in range(len(slist)): index = ord(slist..
문제 링크 https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 문제 풀이 알파벳 개수만큼 list를 만들고 입력받은 문자열에 대해 ord를 통해 정수로 변환해준 후 'a'를 0으로 나타내도록 97을 빼주어 인덱스를 계산했다. 알파벳이 나오면 해당 인덱스에 대한 값이 1씩 증가하도록 하였다. s = input() slist = list(s) list = [0 for i in range(26)] for i in slist: index = ord(i) - 97 list[index] += 1 for i in range(26): print(lis..