18406번: 럭키 스트레이트 (acmicpc.net) 18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net 문제 해석 짝수 자릿수의 수가 주어지면 윗 자릿수 반의 수끼리 더한 값과 아래 자릿수 반의 수끼리 더한 값을 비교하여 같으면 LUCKY를 출력, 같지않으면 READY를 출력한다. 코드 문제 풀이 먼저 N을 받을때 integer가 아닌 문자열로 받고 더할 때마다 integer로 변환시켜주는 방법을 이용했다. integer로 받는다면 각 자릿수를 더하기가 더 어렵기 때문이다. 그 후, 중간 자릿수를 전체 길이에 2를 나눠 알아낸 후 for문을 이용해 윗 자릿수와 ..
전체 글
항공대 알고리즘 동아리 Koala 🥰https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제분석 정수를 입력 받고 이를 배열에 저장받은 다음 0을 입력 받았을 때, 배열에서 절댓값이 가장 작은 값을 pop 하면 되는 문제이다. 단, 0을 입력받았을 때, 배열에 아무것도 없을 경우에는 그냥 0을 출력해야 한다. 입력 되는 정수는 절댓값이 2^31보다 보다 작으며 N은 1보다 크고 100000보다 작은 자연수이다. 또한, 절댓값이 같은 경우 더 작은 값을 출력한다...
https://www.acmicpc.net/problem/1100 1100번: 하얀 칸 체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램 www.acmicpc.net 문제 해석 흰칸에 놓여져 있는 말(F)이 있다면 그것을 counting 해서 출력해주는 문제이다. 흰칸이 첫번째줄에선 짝수번째에 두번째줄에선 홀수번째에 나타나는것을 고려해주어야 한다. 코드 #include using namespace std; int main(void) { int cnt = 0; char a[8][9]; for (int i = 0; i > a[i]; f..
https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 문제해석 9x9 격자판에 숫자가 있을 때 최댓값을 구하고 그 값이 몇행 몇열에 있는지 출력하는 문제이다. 코드 문제풀이 각 행마다 리스트로 저장하여 2차원리스트에 저장한다. 그 후 m이라는 기준점을 두고 각각의 숫자들을 m과 비교하여 m보다 크면 m에 저장하는 식으로 최댓값을 구한다. 이 과정에서 c,r(행과 열 번호)를 저장하여 최댓값의 위치도 저장한다. for문이 끝나면 최종적으로 최댓값과 위치가 나오게 되고 그..
https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 문제 분석 분류 자료 구조(data_structures), 덱(deque) 문제 설명 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선이 있다. 각 풍선 안에는 종이가 하나 들어있고, 종이에는 -N보다 크거나 같고, N..
14915번: 진수 변환기 (acmicpc.net) 14915번: 진수 변환기 변환한 n진수의 수를 출력한다. 11~16 진수의 경우 10 이상의 수는 A~F 문자를 사용한다. 예를 들어, 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F를 사용한다. www.acmicpc.net 문제 해석 정수 2개를 입력 받아서 진수로 변환하는 프로그램 만들기 코드 문제 풀이 입력 받을 두 정수를 a,b를 나타낸다. 그리고 함수를 이용해서 n진수를 활용하도록 정의한 후, 그에 대한 값을 출력한다.
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 0을 입력 받을때마다 arr의 가장 위에것을 pop()으로 빼주고 남은 수들을 for문을 이용해 다 더하고 출력해준다
https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 해석 진법 수 B와 바꿔 줄 수 N을 입력 받은 후에 10진법의 수로 변환하여 출력하는 문제이다. 2진법을 10진법으로 바꿔주는 원리와, 문자열에서의 각각의 문자는 아스키코드값으로 변환 가능하다는 것을 알고 있다면 문제를 쉽게 해결할 수 있다. 코드 #include #include #include using namespace std; string N; int B; int result; int ..
문제 문제풀이 위 문제는 정수 입력값을 딕셔너리에 입력하고 정수가 또 입력 받아지면 딕셔너리의 value 값을 증가시키는 형식으로 코드를 작성하였다. 마지막 출력에는 a 딕셔너리의 key값을 기준으로 정렬시켜 출력시 key값이 가장 작은 수를 출력할 수 있게 하고 이를 다시 딕셔너리로 만들어 value값이 가장 큰 key값 중 그 수가 가장 작은 것을 출력하는 코드를 완성시켰다 import sys N = int(sys.stdin.readline()) a = dict() #딕셔너리 생성 for i in range(N): num = int(sys.stdin.readline()) try: #딕셔너리 key가 있으면 a[num] += 1 except: #딕셔너리 key가 없으면 a[num] = 1 a = sor..
2789번: 유학 금지 (acmicpc.net) 2789번: 유학 금지 아주 멀리 떨어져 있는 작은 나라가 있다. 이 나라에서 가장 공부를 잘하는 학생들은 모두 다른 나라로 유학을 간다. 정부는 최고의 학생들이 자꾸 유학을 가는 이유를 찾으려고 했다. 하지만, www.acmicpc.net 문제 해석 알파벳 대문자로 이루어진 단어를 입력받으면 "CAMBRIDGE"에 포함된 알파벳을 모두 지운 뒤 출력한다. 코드 문제 풀이 EOF를 이용해서 문제를 해결했다. 먼저 딕셔너리에 각 알파벳을 직접 넣어주고 for문에서 입력받은 단어를 한 글자씩 살펴본다. try문에서 딕셔너리에 한 글자를 넣어봐서 error가 일어나지 않는다면 "CAMBRIDGE"에 포함되는 알파벳이므로 아무것도 수행하지 않는다. 만약 딕셔너리의..
https://www.acmicpc.net/problem/14582 14582번: 오늘도 졌다 첫 번째 줄에는 9개의 정수가 주어지는데, 오늘 경기에서 울림 제미니스가 1회 초, 2회 초, ..., 9회 초에 낸 득점이 주어진다. 두 번째 줄에도 9개의 정수가 주어지는데, 스타트링크 걸리버스가 1회 www.acmicpc.net 문제해석 첫번째 줄에 울림 제미니스의 1회 초 ~ 9회 초에 낸 득점이 주어지고, 두번째 줄엔 스타트링크 걸리버스의 1회 초 ~ 9회 초에 낸 득점이 주어진다. 그 후 울림 제미니스가 역전패 당했으면 Yes를 출력하고 아니면 No를 출력한다. 코드 문제풀이 각 팀의 점수를 받아 각각의 리스트에 저장한다. 그 후 for문을 통해 각 팀의 점수를 합한다. 그 때 울림 제미니스가 점수를..