일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- 맥북
- hackerrank
- 편스토랑
- 캐치카페
- 파이썬
- SW Expert Academy
- 데이콘
- PYTHON
- 우분투
- Docker
- leetcode
- Baekjoon
- Real or Not? NLP with Disaster Tweets
- 더현대서울 맛집
- 코로나19
- 자연어처리
- AI 경진대회
- 편스토랑 우승상품
- 금융문자분석경진대회
- 프로그래머스
- ChatGPT
- Kaggle
- gs25
- github
- Git
- programmers
- 프로그래머스 파이썬
- ubuntu
- dacon
- Today
- Total
목록
반응형
Programming/코딩 1일 1문제 (1013)
솜씨좋은장씨
코딩 1일 1문제! 오늘의 문제는 백준의 백대열 입니다. 백준의 백대열 문제를 파이썬으로 풀이하였습니다. 14490번: 백대열 n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000) www.acmicpc.net 👨🏻💻 문제 풀이 숫자 N과 M 이 : 을 사이로 두고 주어지면 두 숫자를 약분한 값을 출력하는 문제입니다. 두 숫자를 약분하여 더이상 나누어지지 않는 숫자로 나누기 위해서는 두 숫자의 최대공약수로 나누어야 합니다. 만약 N이 100 M이 10 이라면 이 둘의 최대공약수인 10을 활용하여 나누면 원하는 값인 10과 1이 나옵니다. 18과 24일 경우라면 최대공약수 6을 활용하여 나누면 됩니다. 최대공약수는 Python의 경우에는 기본으로 제공되는 함수중에 math 의..
코딩 1일 1문제! 오늘의 문제는 백준의 창영이의 일기장 입니다. 2954번: 창영이의 일기장 창영이는 매일 밤 하루동안 일어난 일을 일기장에 남긴다. 일기장을 쓰면서 영어 공부도 같이 하기 위해서 영어로 일기를 쓴다. 또, 남들이 자신의 일기장을 보는 것을 막기 위해서 모음('a','e','i www.acmicpc.net 👨🏻💻 문제 풀이 창영이는 남이 일기장을 보는 것을 막기 위해서 모음 ( 'a' , 'e', 'i', 'o', 'u' ) 다음에 'p'를 하나쓰고 그 뒤에 모음을 하나더 씁니다. "kemija" 의 경우 ke 다음에 pe가 붙고 ja 뒤에 pa 가 붙어 "kepemipijapa" 가 됩니다. 우리는 "kepemipijapa" 를 "kemija" 로 바꾸어야합니다. 먼저 모음인지 아닌..
코딩 1일 1문제! 오늘의 문제는 백준의 회의실 배정입니다. 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 👨🏻💻 문제 풀이 이 문제는 비교적 쉽게 문제를 풀 수 있습니다. 이 힌트를 보고 생각난 방법입니다. 보면 시작시간과 끝시간이 가지런히 정렬 되어있는 것을 볼 수 있습니다. 그럼 정렬은 어떤 기준으로 해야하느냐! 먼저 문제 속 기준을 보아야합니다. 회의실의 개수 == 1개 회의가 시작하면 중간에 중단될 수 없음 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있음 이때 시작시간과 끝 시간은 같을 수 있음 회의실의 개수는 하나이고 회의가 시작하면 중간에 중단될 수 없으므로 빠르게 끝나는 회의 일수록 더 많은 회의가 ..
코딩 1일 1문제! 오늘의 문제는 백준의 더하기 2 입니다. 10823번: 더하기 2 문자열 S가 여러 줄에 걸쳐서 주어진다. S의 길이는 최대 10,000이다. 포함되어있는 정수는 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 👨🏻💻 문제 풀이 먼저 이 문제는 여러 줄에 걸쳐 입력 받은 문자열 속 숫자를 모두 더한 값을 구하는 문제입니다. 문자열을 입력 받을 때에는 while 반복문을 활용하여 여러 줄을 입력 받는데 이때 마지막 줄 이후에 반복문을 멈추는데에는 try except 에서 EOFError를 활용하여 마지막 줄일 경우 반복문이 멈추도록 합니다. 그리고 예제 문자열을 잘 살펴보면 10,20, 3 0,50 ,1 00 10,20, 3 0, 50 ~~ 이걸 공백없이 한..
코딩 1일 1문제! 오늘의 문제는 백준의 CCW 입니다. 11758번: CCW 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다. www.acmicpc.net Solution def convert_input_to_point(string): point_x, point_y = map(int, string.split()) return {"x": point_x, "y": point_y} def CCW(point1, point2, point3): answer = 0 y = (point2['x'] - poi..
코딩 1일 1문제! 오늘의 문제는 프로그래머스의 위클리 챌린지 4주차 문제! 직업군 추천하기 입니다. 3주차 문제를 먼저 풀고 왔어야했으나! 저의 실력이 아직.... 4주차를 먼저! 풀어보기로 했습니다. 코딩테스트 연습 - 4주차 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr Solution def make_prefer_score_table(languages, preference): prefer_score = {} for language, score in zip(languages, preference): prefer_score[lan..
코딩 1일 1문제! 오늘의 문제는 백준의 이번학기 평점은 몇점? 입니다. 2755번: 이번학기 평점은 몇점? 첫째 줄에, 백준이가 이번 학기에 들은 과목 수가 주어진다. 둘째 줄부터 N개의 줄에 각 과목의 과목명, 학점, 성적이 주어진다. 과목명은 알파벳 소문자와 숫자, 그리고 밑줄 (_)로만 이루어져 있 www.acmicpc.net Solution def this_year_avg_score(grade_info): credit_dict = {"A+": 4.3, "A0": 4.0, "A-": 3.7, "B+": 3.3, "B0": 3.0, "B-": 2.7, "C+": 2.3, "C0": 2.0, "C-": 1.7, "D+": 1.3, "D0": 1.0, "D-": 0.7, "F" : 0.0} sum_sc..
코딩 1일 1문제! 오늘의 문제는 백준의 진수 변환기 입니다. 14915번: 진수 변환기 변환한 n진수의 수를 출력한다. 11~16 진수의 경우 10 이상의 수는 A~F 문자를 사용한다. 예를 들어, 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F를 사용한다. www.acmicpc.net Solution def decimal_converter(number, n): answer = "" temp = list("0123456789ABCDEF") if number == 0: answer = "0" else: while number: answer += temp[number % n] number //= n return answer[::-1] if __name__ == "__main__":..
코딩 1일 1문제! 오늘의 문제는 백준의 카이사르 암호 입니다. 5598번: 카이사르 암호 가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건 www.acmicpc.net Solution def caesar_cipher(string): answer = [] for char in string: if ord(char) > ord('C'): temp = chr(ord(char) - 3) elif ord(char) < ord('D'): temp = chr(ord('Z') - ord('C') + ord(char)) answer.ap..
코딩 1일 1문제! 오늘의 문제는 백준의 이진수 연산 입니다. 12813번: 이진수 연산 총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오. www.acmicpc.net Solution def calculate_binary(A, B): MASK = pow(2, 100000) - 1 print(bin(A & B)[2:].zfill(100000)) print(bin(A | B)[2:].zfill(100000)) print(bin(A ^ B)[2:].zfill(100000)) print(bin(A ^ MASK)[2:].zfill(100000)) print(bin(B ^ MASK)[2:].zfill(1..
코딩 1일 1문제! 오늘의 문제는 백준의 로또 입니다. 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net Solution from itertools import combinations def lotto(numbers): numbers = numbers.split() num, numbers = numbers[0], numbers[1:] lotto_comb = list(combinations(numbers, 6)) lotto_comb = [" ".join(list(map(str, sorted(list(m..
코딩 1일 1문제! 오늘의 문제는 백준의 가장 많은 글자 입니다. 1371번: 가장 많은 글자 첫째 줄부터 글의 문장이 주어진다. 글은 최대 5000글자로 구성되어 있고, 공백, 알파벳 소문자, 엔터로만 이루어져 있다. 그리고 적어도 하나의 알파벳이 있다. www.acmicpc.net Solution import sys def most_common_word(input_string): count_dict = {} result = "" alphabet_word = "abcdefghijklmnopqrstuvwxyz" for alphabet in alphabet_word: count_dict[alphabet] = input_string.count(alphabet) items = sorted(count_dict...
코딩 1일 1문제! 오늘의 문제는 백준의 별 찍기 2 입니다. 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net Solution def print_star_2(N): for i in range(N): print(f"{' ' * (N - i - 1)}{'*' * (i + 1)}") if __name__ == "__main__": N = int(input()) print_star_2(N) Solution 풀이 f-string을 활용하여 문제를 풀었습니다. 각 행마다 공백 N - i - 1 개 + * i + 1 개 출력하도록 합니다. GitHub - SOMJ..
코딩 1일 1문제! 오늘의 문제는 백준의 치킨 배달 입니다. 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net Solution from itertools import combinations def find_home_chicken(city_map): home, chicken = [], [] for i, row in enumerate(city_map): for j, col in enumerate(row): if row[j] == 1: home.append((i, j)) elif row[j] ==..
코딩 1일 1문제! 오늘의 문제는 백준의 큰 수 A+B입니다. 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net Solution def big_sum(num1, num2): return num1 + num2 if __name__ == "__main__": num1, num2 = map(int, input().split()) print(big_sum(num1, num2)) Solution 풀이 Python에서는 큰 수도 그냥 더하여 int 형태로 표현할 수 있으므로 입력 받은 두수를 더한 값을 출력하면 됩니다. GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07 1..
코딩 1일 1문제! 오늘의 문제는 백준의 ATM 입니다. 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net Solution def ATM(people): people.sort() best_order = [] for i in range(len(people)): best_order.append(sum(people[:i+1])) return sum(best_order) if __name__ == "__main__": people_num = int(input()) people = list(map(int, input().split())) print(A..
코딩 1일 1문제! 오늘의 문제는 프로그래머스 2021년 웹 백엔드 개발자 상반기 Dev-Matching 문제 였던 로또의 최고 순위와 최저 순위 입니다. 이번주 로또 당첨을 기원하며! 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr Solution def get_lotto_rank(match_num): rank_dict = {6: 1, 5: 2, 4: 3, 3: 4, 2: 5, 1: 6, 0: 6} return rank_dict[match_num] def sol..
코딩 1일 1문제! 오늘의 문제는 프로그래머스의 위클리 챌린지 2주차 문제인 상호 평가 입니다. 코딩테스트 연습 - 2주차 [[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD" programmers.co.kr Solution def get_person_grade(score): grade = "F" if score >= 90: grade = "A" elif 80
코딩 1일 1문제! 오늘의 문제는 백준의 좋은 단어입니다. 2857번: FBI 5개 줄에 요원의 첩보원명이 주어진다. 첩보원명은 알파벳 대문자, 숫자 0~9, 대시 (-)로만 이루어져 있으며, 최대 10글자이다. www.acmicpc.net Solution def well_word(word_list): well_cnt = 0 for word in word_list: my_stack = [] for char in word: if my_stack == []: my_stack.append(char) elif my_stack != []: if my_stack[-1] == char: my_stack.pop() else: my_stack.append(char) if my_stack == []: well_cnt +=..
코딩 1일 1문제! 오늘의 문제는 백준의 FBI입니다. 2857번: FBI 5개 줄에 요원의 첩보원명이 주어진다. 첩보원명은 알파벳 대문자, 숫자 0~9, 대시 (-)로만 이루어져 있으며, 최대 10글자이다. www.acmicpc.net Solution def find_fbi_agent(agent_list): result = "HE GOT AWAY!" fbi_agent_ids = [] for agent_id, agent in enumerate(agent_list): if agent.find("FBI") != -1: fbi_agent_ids.append(str(agent_id + 1)) if fbi_agent_ids != []: result = " ".join(fbi_agent_ids) return res..
코딩 1일 1문제! 오늘의 문제는 백준의 그대로 출력하기 2 입니다. 11719번: 그대로 출력하기 2 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 www.acmicpc.net Solution def just_print(): while True: try: string2 = input() print(string2) except: break if __name__ == "__main__": just_print() GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07 1일 1문제 since 2020..
코딩 1일 1문제! 오늘의 문제는 프로그래머스의 위클리 챌린지 1주차 문제인 부족한 금액 계산하기 입니다. 드디어 길고 길었던, 2년같이 느껴졌던 2주간의 자가격리가 끝나 오늘부터는 본격적으로 다시 블로그를 운영해보려합니다. 코딩테스트 연습 - 1주차 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr Solution def solution(price, money, count): answer = -1 total_price = 0 for cnt in range(1, count+1): total_price += price * cnt..
코딩 1일 1문제! 드디어 2주간 셀프 자가격리의 마지막날! ㅠㅠㅠㅠ 오늘까지 좀 치트키를... 백준의 A+B - 6 입니다. 10953번: A+B - 6 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net Solution def A_PLUS_B_6(number_list): return [sum(numbers) for numbers in number_list] if __name__ == "__main__": number_list= [] for _ in range(int(input())): num1, num2 = map(int, input().split(",")) number_list.append((num1, num2)) result = A_PLUS_B..
코딩 1일 1문제! 오늘의 문제는 백준의 줄번호 입니다. 4470번: 줄번호 텍스트에서 줄을 입력받은 뒤, 줄 번호를 출력하는 프로그램을 작성하시오. www.acmicpc.net Solution def line_number(string_list): for idx, string in enumerate(string_list): print(f"{idx+1}. {string}") if __name__ == "__main__": string_list = [] for _ in range(int(input())): string = input() string_list.append(string) line_number(string_list) GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 ..
코딩 1일 1문제! 오늘의 문제는 백준의 NN입니다. 11944번: NN 첫 번째 줄에는 N, M이 주어진다. (1 ≤ N, M ≤ 2016) www.acmicpc.net Solution def NN(N, M): return (N * int(N))[:int(M)] if __name__ == "__main__": N, M = input().split() print(NN(N, M)) GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07 1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub. github.com
코딩 1일 1문제! 오늘의 문제는 백준의 단어 뒤집기 2 입니다. 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net Solution def word_flipping(string): results = [] temp, words = "", "" tag_flag, word_flag = False, True for char in string: if char == "": tag_flag = False word_flag = True results.append(temp) temp = "" if..
코딩 1일 1문제! 오늘의 문제는 백준의 잃어버린 괄호 입니다. 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net Solution def lost_bracket(expression): split_minus = expression.split('-') temp = [] for exp in split_minus: sum_num = 0 for num in exp.split('+'): sum_num += int(num) temp.append(sum_num) result = temp[0] for num in temp..
코로나 관련하여 재택 및 격리로 인하여 너무 슬픈 일요일 오늘의 문제는 백준의 대충 더해입니다. 으아아아 8949번: 대충 더해 두 정수 A, B가 공백을 두고 주어진다. A와 B는 1과 1,000,000 사이의 정수이다. www.acmicpc.net Solution def daechung_sum(num1, num2): result = [] num1_len, num2_len = len(num1), len(num2) if num1_len > num2_len: num2 = '0' * (num1_len - num2_len) + num2 else: num1 = '0' * (num2_len - num1_len) + num1 max_len = max([num1_len, num2_len]) for i in range..
코딩 1일 1문제! 오늘의 문제는 백준의 과제 안 내신 분..? 입니다. 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net Solution def no_report(numbers): set_numbers = list(set(range(1, 31)) - set(numbers)) set_numbers.sort() return set_numbers[0], set_numbers[1] if __name__ == "__main__": numbers = [] for _ in range(28): number = ..
코딩 1일 1문제 오늘의 문제는 최소, 최대 입니다. 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net Solution def min_max(string): number_list = list(map(int, string.split())) return min(number_list), max(number_list) if __name__ == "__main__": _ = input() numbers = input() min_num, max_num = min_max(numbers) p..