[문제] [코드] [코드 풀이] 입력한 문자들을 제외한 알파벳들을 찾아야 해서 맨 첫 줄에는 알파벳 대문자 26개를 요소로 갖는 리스트 alphabet을 선언 하였다. 문자열들을 입력 받을 횟수 n을 input()을 이용하여 작성하였다. 먼저 문자열들을 a에 입력 받고 alphbet 리스트에 입력받은 알파벳을 len(a)번 리스트명.remove() 함수를 이용하여 제거하는 반복문을 작성하였다. 남은 알파벳 요소들을 아스키 코드로 변환하는 ord()함수를 이용하여 alphbet 리스트의 요소들을 숫자로 바꾸어 주었다. i + 1로 넘어가기 전 마지막 줄에 입력되지 않은 알파벳들의 합을 sum() 함수를 이용하여 구했다.
분류 전체보기
문제 요약 N개의 길이를 가진 수열에서 차가 M이상이면서 가장 작은 경우의 차를 구하는 문제 입력 N, M이 주어지고 수열이 한줄에 하나씩 입력된다 출력 M 이상인 가장 작은 차 코드 설명 sort로 크기 순으로 정렬한 후 투포인터로 앞에서부터 비교해가며 가장 작은 차를 찾는다 통상적인 투포인터와 비슷하지만 left를 0 right를 len-1로 설정했을 때에는 너무 많은 조건이 생기게 되었어서 앞에서부터 비교하는게 유리하다. 문제에 따라 left와 right를 어떻게 설정하는지가 중요한 것 같다 경우마다 최소값을 리스트에 append하고 최종적으로 최소값을 찾는 방법은 시간초과 문제를 일으킨다. 최소값만 저장해놓고 16줄처럼 비교만 하면서 더 최솟값인 경우만 저장하면 메모리도 시간도 아낄 수 있다.
https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 투 포인터 문제이다. 이는 두 숫자들의 합을 이용해서 절대값이 0에 가까운 값을 출력하는 것이다. 만약 절대값이 0이라면 반복문을 그만하고 해당 두 숫자를 출력하면 된다. 그렇지 않다면, 두 수의 합이(절대값 아님) 0보다 작은 음수 값이라면 왼쪽 인덱스 번호를 증가하고, 만약 0보다 큰 양수 값이라면 오른쪽 인덱스 번호를 감소시킨다. 그렇게 최종적으로 절대값이 ..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 문제요약 숫자들이 주어지고, 그 사이에 연산자들을 끼워넣는다. 만들 수 있는 모든 식의 결과 값들 중 최대값과 최소값을 구한다. 식의 계산은 연산자 우선순위에 상관없이 앞에서부터 계산한다. 문제 해결 모든 연산자 조합을 체크하는 방법을 사용했다. 각 연산자를 0, 1, 2, 3에 대응하고 연산자들(+,-,*,/) 각각의 개수가 주어졌으므로..
문제 논리학 교수 양항승은 칠판에 다음과 같은 내용을 썼다. 정확하게 a개의 말은 참이다. 정확하게 b개의 말은 참이다. 정확하게 c개의 말은 참이다. ... ... ... a, b, c는 정수이다. 그리고 나서 항승이는 칠판에 작성한 내용 중에 총 몇 개가 참인지 알아내는 사람은 A+을 받는다. 입력으로 항승이가 작성한 내용에 있는 정수가 주어진다. 예를 들면, "정확하게 i개의 말은 참이다" 에서 i가 입력으로 주어진다. 항승이가 칠판에 작성한 내용이 주어졌을 때, 총 몇 개의 내용이 참인지 구해보자. 입력 첫째 줄에 항승이가 한 말의 개수 N이 주어진다. N은 1보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄에 항승이가 칠판에 작성한 내용에 있는 정수가 주어진다. 이 정수는 50보다 ..
1063 킹 https://www.acmicpc.net/problem/1063 Algorithm 킹이 움직인다. 이때 체크해야할 조건은 다음과 같다. 격자 안에서만 움직여야 한다. 돌이 있는 곳으로 움직일 경우, 돌과 함께 움직여야 한다. 이때 돌 또한 격자 안에서 움직여야 한다. 돌이 격자 밖으로 나가는 경우도 체크하되, 이때 킹이 격자 내에서 움직인다면 상관없이 움직인다 Code # 행: row, 열: col row = {'8':0, '7':1, '6':2, '5':3, '4':4, '3':5, '2':6, '1':7} col = {'A':0, 'B':1, 'C':2, 'D':3, 'E':4, 'F':5, 'G':6, 'H':7} move = {'R':(0,1), 'L':(0,-1), 'B':(1,0..
https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 알고리즘 분류 정렬 이분 탐색 두 포인터 문제 KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양..
문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다. 듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다. 출력 듣보잡의 수와 그 명단을 사전순으로 출력한다. 코드 n, m = map(int, input().split()) hear = set() see = s..
https://www.acmicpc.net/problem/14724 14724번: 관리자는 누구? PROBRAIN, GROW, ARGOS, ADMIN, ANT, MOTION, SPG, COMON, ALMIGHTY중 동문 커뮤니티 관리자로 선발되는 후보가 소속한 동아리의 이름을 대문자로 출력한다. www.acmicpc.net [ 문 제 ] BIG 프로젝트로 동문 커뮤니티 웹사이트를 만들려고 한다. 동문 커뮤니티의 관리자는 홈페이지와 선후배 네트워크를 담당하는 일을 한다. 동문 커뮤니티 제작 프로젝트를 맡으신 Mr.Nam 교수님은 동문 커뮤니티 운영을 맡을 중요한 관리자를 뽑아달라는 부탁을 동아리에 전달했다. 회의 결과 다음과 같은 규칙으로 매년 각 동아리에서 관리자를 선출하자는 의견이 나왔다. 각 동아리에..
https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net 문제 N*N(1 n; for (int i = 0; i > arr[i]; } for (int i = 0; i = 2) r++; cnt = 0; } } if (cnt >= 2) r++; ..
https://www.acmicpc.net/problem/2153 2153번: 소수 단어 소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나 www.acmicpc.net 문제 소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나 있을 때, a를 1로, b를 2로, …, z를 26으로, A를 27로, …, Z를 52로 하여 그 합을 구한다. 예를 들어 cyworld는 합을 구하면 ..
문제 https://www.acmicpc.net/problem/9996 Algorithm 정규식을 활용한다. C++ 정규식에서 regex_match(str, e)는 정규표현식 e와 문자열 str이 일치함을 나타내고, 모든 문자열을 표현하기위한 정규식 e는 ".*"으로 나타낼 수 있다. input의 표현식에서 *를 .*으로 바꾸어 정규표현식을 생성한 뒤, regex_match를 수행한다. Code #include using namespace std; #define IAMFAST ios_base::sync_with_stdio(false);cin.tie(0); typedef long long ll; typedef pair pii; typedef pair pll; int n; string str; void IN..