분류 전체보기

    [백준/알고리즘]#2331: 반복수열 [파이썬(python)/수학]

    https://www.acmicpc.net/problem/2331 2331번: 반복수열 첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다. www.acmicpc.net 문제 이해하는 것만 한참 걸린 문제였다... 실버에서도 헤매는 알린이 ㅠㅠ 먼저 각 자릿수로 분리하기 위해 10씩 나누는 작업을 진행했고 자릿수 별 숫자로 계산한 res 결과값이 perm리스트에 존재한다면 break로 루프를 빠져나갔다. 그 해당 인덱스까지 출력. 파이썬 코드 #2331 반복수열 import sys input = sys.stdin.readline A, P = map(int, input().split()) perm = [A] while True: res = 0 A=perm[-1] while(A..

    [백준/알고리즘]#1051: 숫자 정사각형 [파이썬(python)/브루트포스]

    https://www.acmicpc.net/problem/1051 1051번: 숫자 정사각형 N*M크기의 직사각형이 있다. 각 칸은 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 www.acmicpc.net 브루트포스 알고리즘 문제로 브루트 포스는 "Brute Force", 즉 무식한 강제(?)라고 직역할 수 있습니다. 그리디 알고리즘과 다르게 완전 탐색으로 BFS, DFS,이분탐색처럼 모든 노드를 탐색하는 방법입니다. 그러므로 이 문제에서는 직사각형의 꼭짓점을 모두 탐색하도록 알고리즘을 구현하면 됩니다. 파이썬 코드 import sys input = sys.stdin.readline N, M =..

    [백준/알고리즘]#10816: 숫자 카드 2 [해쉬]

    https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 해쉬를 이용하거나 이분 탐색을 통해 풀 수 있는 문제다. 나는 해쉬를 사용하여 풀었다. 파이썬 코드 #10816 import sys input = sys.stdin.readline N = input() real_card = list(map(int, input().split())) real_card.sort() M = input() pred_card = list(m..

    [백준/알고리즘]#2908: 상수 [수학/파이썬(python)/BOJ]

    https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 배열을 거꾸로 출력하는지 알면 풀 수 있는 문제다. C++이나 C언어였다면 반복 루프를 돌려서 하나씩 출력해줘야 하지만 파이썬은 간편하게 [::-1] 로 뽑을 수 있는 자료구조다. (외쳐 갓파이썬!!) #2908 상수 import sys input = sys.stdin.readline a, b = input().split() a = int(a[::-1]) b = int(b[::-1]) if a>b: print..

    [백준/알고리즘]#1152: 단어의 개수 [문자열/파이썬(python)/BOJ]

    https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net #1152 단어의 개수 import sys input = sys.stdin.readline sen = [] sen = list(map(str, input().split())) print(len(sen))

    [백준/알고리즘] #6996: 애너그램 [문자열/파이썬(python)/BOJ]

    https://www.acmicpc.net/problem/6996 6996번: 애너그램 첫째 줄에 테스트 케이스의 개수(

    [백준/BOJ/알고리즘/파이썬(python)]#1100: 하얀 칸 [문자열]

    https://www.acmicpc.net/problem/1100 1100번: 하얀 칸 체스판은 8*8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램 www.acmicpc.net 처음엔 국어능력이 부족해서.. 문제가 무슨 소리인지 이해하는데 걸려서 문제를 반복해서 계속 읽었다ㅋㅋㅋㅋㅋ 체스판 모양의 흰색 위에 있는 말 개수만 세면 된다. 처음엔 흰색의 열이 다 짝수 0 2 4 6 이라고 생각했는데 출력이 11인거 보고 뭔가 잘못 되었다는 걸 알았다 ^^;; 하얀 칸은 행과 열의 위치가 [0,0] [0,2] [0,4] [0,6] [1,1], [1,3].... 이런식으로 체..

    [백준/BOJ/알고리즘/파이썬(python)]#11441: 합 구하기[누적 합]

    https://www.acmicpc.net/problem/11441 11441번: 합 구하기 첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, ..., AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는 www.acmicpc.net 처음에는 바로 합을 구해서 출력하도록 했는데 시간초과가 났다. 시간초과 코드 #11441 합 구하기 import sys input = sys.stdin.readline N = int(input()) A = [] A =list(map(int, input().split())) M = int(input()) for k in rang..

    [백준/BOJ/알고리즘/파이썬(python)]#1157: 단어 공부 [문자열]

    https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 브론즈 등급의 문제라서 금방 풀 줄 알았는데 생각보다 구조를 짜기가 어려웠다. 처음엔 아스키코드를 이용해서 ord()함수를 이용해서 풀고있는데 잘 안되서 카운트한 정보 넣은 리스트를 만들고 max의 인덱스를 리스트에서 뽑아서 출력하는 구조 짜는 방향으로 바꾸었다. 대소문자 상관없다고 했으므로 upper()함수를 사용하면 대소문자 따로 카운트하지 않아도 된다. 파이썬 코드 #1157_단어공부 word = input().upper()..

    [백준/BOJ/알고리즘/파이썬(python)]#2675:문자열 반복

    https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 파이썬 코드 #2675_문자열 반복 T = int(input()) for _ in range(T): R, S = list(map(str, input().split())) R = int(R) for i in S: print(R*i, end='') print() ABCABCABC가 아닌 AAABBBCCC를 출력하고자 한다면 반복문을 안에서 한번 더 돌리면 된다.

    [백준/BOJ/알고리즘/파이썬(python)/C++]#11654:아스키 코드

    https://www.acmicpc.net/problem/11654 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 파이썬 (Python) chr()함수를 쓰려고 했는데 ord()함수를 쓰면 됐다. ord() : 문자의 아스키 코드값을 리턴하는 함수이다. chr() : 아스키 코드값 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수이다. 참조 https://wikidocs.net/32 (점프 투 파이썬-WikiDocs) #11654 아스키코드 x = input() print(ord(x)) C++ chr자료형을 int로 출력하면 바로 아스키코드로 나온다는 것은 C언어를 많..

    [백준/BOJ/알고리즘/파이썬(python)]#2740_행렬 곱셈

    https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 행렬의 곱셈을 계산하는 문제로 반복문과 배열을 행렬곱연산에 맞게 구조를 잘 짜면 된다. 파이썬 코드 #2740_행렬곱셈 import sys input = sys.stdin.readline N, M = map(int, input().split()) A_element = [] for _ in range(N): A_element.append(list(map(int,input().spl..

    [백준/BOJ/알고리즘/파이썬(python)]#2941_크로아티아 알파벳 [문자열]

    https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 센스껏 replace()라는 함수를 사용해서 푸는 문자열 문제다. 이상하게 이 문제는 stdin.readline()하면 카운트가 한 번 더 된다... 이유를 모르겠다ㅠ 그냥 input으로 입력을 받으면 된다. 파이썬 코드 #2941_크로아티아 알파벳 cro = input() alph=['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=',..

    [백준/BOJ/알고리즘/파이썬(python)]#3273_두 수의 합

    https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 정렬/두 포인터 문제로 역시나 그냥 반복문을 돌리니 시간초과가 떴다 이분탐색하여 두 포인터로 탐색해서 풀면 된다. 반복문 조건을

    [백준/BOJ/알고리즘/파이썬(python)]#8595_히든 넘버[문자열]

    https://www.acmicpc.net/problem/8595 8595번: 히든 넘버 첫째 줄에 단어의 길이 n (1 ≤ n ≤ 5,000,000)이 주어진다. 둘째 줄에는 단어가 주어진다. 단어는 알파벳 대/소문자와 숫자(0-9)로 이루어져 있다. www.acmicpc.net 파이썬 코드 #8595 히든넘버 import sys input = sys.stdin.readline n = int(input()) st = input() number = '0123456789' hid = '' for i in range(n): if st[i] in number: hid += st[i] else: hid += ' ' res = 0 hidfind = list(map(str, hid.split(' '))) for i..

    [백준/BOJ/알고리즘/파이썬(python)]#10809_알파벳 찾기

    https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 파이썬 코드 import sys input = sys.stdin.readline S = input() alph = list(range(97,123)) for i in alph: print(S.find(chr(i)), end=' ') alph = 'abcdefghijklmnopqrstuvwxyz' 이런식으로 해서 짜는 것도 가능하지만 아스키코드를 활용하면 된다. 97은 소문자 a, 12..

    [백준/BOJ/알고리즘/파이썬(python)/C++]#1920_수 찾기[이분탐색]

    https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 이 문제는 많은 분들이 저를 포함해서 첫 시도에 (쉬운문제네~)하고 시간초과를 맛보셨을 것 같습니다 ^^;;; 이분탐색으로 풀어야한다고 문제에 적어줘야하는거 아니냐구~ㅋㅋㅋ 시간초과 나서 실패한 파이썬 코드 import sys input = sys.stdin.readline N = int(input()) n_list = [] n_list = map(..

    [백준/BOJ/알고리즘/파이썬(python)/C++]#1932_정수 삼각형

    https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 그리디 알고리즘으로 DP로 짜면 되는 문제다. 어렵게 자꾸 생각하니까 로직이 막 꼬이고 한참 헤맸다...휴 그냥 단순하게 생각해도 되는 문제는 단순하게 생각하자! 파이썬 코드 import sys input = sys.stdin.readline n = int(input()) tri = [] for _ in range(0, n): tri.append(list(map(int, input().split()))) row = 2 for i in range(1, n): for j ..

    [백준/BOJ/알고리즘/파이썬(python)]#7785_회사에 있는 사람

    https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net import sys input = sys.stdin.readline dic = {} n = int(input()) for _ in range(n): person, log = map(str,input().split()) if log == 'enter': dic[person] = 'enter' if log == 'leave': del dic[person] res..

    [백준/BOJ/알고리즘/파이썬(Python)]#10212:Mystery

    https://www.acmicpc.net/problem/10212 10212번: Mystery "Yonsei"혹은 "Korea"(이번에는 연세대를 앞에 해드렸습니다.)중 하나를 출력한다. 따옴표는 출력하지 않는다. www.acmicpc.net 말 그대로 Mystery인 문제ㅎㅎ... 재밌는 문제다 딱히 알고리즘 공부 느낌보다는 재미로 간식 먹듯이 풀어볼 만한 문제랄까... 출력문은 고려대 연세대가 번갈아 나타난다. (고려대를 앞에 두어야죠...) 처음엔 문제보다 딱 3초만 직관적으로 생각난 풀이는 무한 루프 안에서 time()이랑 sleep()함수를 사용하는 것이었다... 그런데 질문 게시판을 보니 rand()를 쓰는게 출제의도라는 스포를...!! 그런데 또 random.random()으로 쓰면 틀린다..