분류 전체보기

1874번: 스택 수열 (acmicpc.net) 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 코드 import sys input=sys.stdin.readline n = int(input()) p = [] # 입력 받은 수열 q = [] # 스택 s = [] # '+' or '-' ans = [] # p와 일치 유무 확인 r = 1 for _ in range(n): num = int(input()) p.append(nu..
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 소스코드 문제풀이 대소문자 상관없이 가장 많이 사용된 알파벳을 구하는 문제기 때문에 문자열을 입력받고 모두 대문자로 변환해주었다. set을 이용하여 중복을 제거하였고, 그 후 원소를 하나씩 뽑아서 문자 개수를 비교하였다.
문제 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net Algorithm 우선 리스트 A에 입력값을 넣고 정렬한다. 정렬된 값이므로 숫자가 바뀌면 이전 숫자는 다시 나타나지 않는다. A의 마지막 요소부터 시작하여 현재의 숫자 a를 다른 리스트 N에 추가하고 어떤 숫자의 빈도수를 기록하는 리스트 F에 1을 추가한다. A의 다음 숫자 b가 이전에 나타난 숫자 a와 같으면 F에 저장되어 있는 마지막 수에 1을 더하고 그렇지 않으면 F에 1을 추가하고 N에 b를 추가한다. 이 때 b가 a와 다를 경우가 발생하면 a..
14561번: 회문 (acmicpc.net) 14561번: 회문 n진수는 base가 n인 수를 말한다. 예를 들어 십진수는 base가 10인 수이다. n진수의 수 AmAm-1Am-2…A1A0를 n진수로 표현해보면 AmAm-1Am-2…A1A0 = Am × nm + Am-1 × nm–1 + Am-2 × nm–2 + … + A1 × n1 + A0 × n0이다. www.acmicpc.net 십진수 a가 n진수로 변환했을때의 값이 회문인지 아닌지를 판별하는 문제이다. 먼저 십진수 a를 n진수로 변환해야하므로, 빈리스트와 while문을 설정하여 append 해주었다. 변환한 값이 회문인지 아닌지를 판별해야하므로 for문을 이용하여 한번이라도 회문이 아닌 상황이 오면 flag = False로 설정하였다. 변환값이 회..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net import java.util.Scanner; public class Main { public static int[] stack; public static int size = 0; public static void main(String[] args) { Scanner in = new Scanner(System.in); StringBuilder sb = new StringBuild..
https://www.acmicpc.net/problem/14561 14561번: 회문 n진수는 base가 n인 수를 말한다. 예를 들어 십진수는 base가 10인 수이다. n진수의 수 AmAm-1Am-2…A1A0를 n진수로 표현해보면 AmAm-1Am-2…A1A0 = Am × nm + Am-1 × nm–1 + Am-2 × nm–2 + … + A1 × n1 + A0 × n0이다. www.acmicpc.net 와 진짜 3일동안 고민하고 여러곳에 질문드렸는데 어이없게 틀렸다고 떴던문제 while문 break를 안했습니다 ㅋㅋㅋㅋㅋㅋㅋㅋ..... 예제는 맞게 출력되는데 환장하는줄 알았습니다 앞으로도 화이팅
문제 분석 완전탐색으로 풀기에는 M의 크기와 N의 크기를 곱했을 때 21억을 넘어감으로 불가능하다. 따라서 시간을 최적화해야 되는데, 이분탐색을 적용했다. 절단기의 높이가 0부터 주어진 나무의 최대값까지 선형적으로 있다고 가정하고, 절단기의 높이를 이분탐색을 통해 찾는다. 중간점검을 진행할 때, 절단된 높이의 합과 M의 길이를 비교하여 다음과 같이 min값과 max 값을 변경한다. 절단된 높이의 합이 M보다 크거나 같은 경우: min 값을 mid + 1로 갱신 절단된 높이의 합이 M보다 작은 경우: max 값을 mid - 1로 갱신 주의할 점은 절단된 높이의 합은 int를 초과할 수 있으므로 long으로 선언해줘야 한다. 문제 풀이 import java.util.Scanner; public class M..
문제 https://www.acmicpc.net/problem/13410 코드 N, K = map(int,input().split()) B = [] for i in range(K): C = N*(i+1) C = str(C) D = C[::-1] D = int(D) B.append(D) print(max(B)) 풀이 구구단 값을 거꾸로 출력한다음 리스트에 저장하고 그 중 최대값을 출력하는 간단한 문제이다
문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 코드 from collections import Counter input = __import__('sys').stdin.readline input() s = list(map(int, input().split())) s = Counter(s) input() c = list(map(int, input().split())) ans = [] for i in c: i..
https://www.acmicpc.net/problem/3029 3029번: 경고 첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다. 둘째 줄에는 나트륨을 던질 시간 www.acmicpc.net 📝 알고리즘 시간 계산을 할 때 주의할 점은 24시간이 넘어갔냐 아니냐를 컴퓨터가 판단하도록 지시해야 하는 것이다. 20시와 4시는 숫자만 봤을 때 당연히 20이 더 크지만, 만약 다음날 4시를 뜻하는 거라면 4시가 더 늦은 시간이기 때문에, 이를 컴퓨터가 알아차리도록 해야 한다. 이 문제의 예시에는 두 가지 케이스가 잘 나와있다. 첫 번째 케이스는 다음날 새벽 4시를 뜻하므로 ..
문제 https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 소스코드 import math n, b = map(str, input().split(' ')) b = int(b) D = {} for i in range(10): D[i] = str(i) for i in range(26): D[i+10] = chr(65+i) d = {v: k for k, v in D.items()} li = [] for i in range(len(n)): li.append(d..
문제 코드 n=int(input()) a={} for i in range(n): b=str(input()) if b not in a: a[b]=1 else: a[b]+=1 value=max(list(a.values())) key=list(a.keys()) x=[] for i in range(len(key)): if a[key[i]]==value: x.append(int(key[i])) x.sort() print(x[0]) 풀이 이전에 연습했던 딕셔너리 문제와 비슷해보여서 막힘없이 풀었다. 단순히 딕셔너리에 이미있으면 1더해주고 없으면 1저장하는식으로 입력하고 가장 큰수를 가져와서 그 key를 출력했다.
KauKoala
'분류 전체보기' 카테고리의 글 목록 (88 Page)