공부하기 508

[Python] 백준 풀기 1100 - 하얀 칸

파이썬 백준 1100번 브론즈 2 https://www.acmicpc.net/problem/1100 1100번: 하얀 칸 체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 주어진 문자열을 한 줄의 리스트에 모두 넣고 짝수 index (흰색 칸) 에 대해 'F' 가 있는지 검사한다. 이때 리스트에 입력되는 각각의 row 줄은 흰색과 검은색이 변경되기 때문에 마지막에 index 를 하나 늘리기 위한 문자 '0' 을 매 줄 추가시킨다. 코드 보기 import sys inputdata = sys..

공부하기/백준 2023.01.04

[Python] 백준 풀기 2822 - 점수 계산

파이썬 백준 2822번 실버 5 https://www.acmicpc.net/problem/2822 2822번: 점수 계산 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 입력되는 점수들을 score_ls 리스트 index 와 문제 번호가 일치하도록 입력 받는다. 점수 리스트를 내림차순으로 정렬을 하고 가장 큰 앞쪽 5 개만 남겨두고 나머지를 제거한다. 입력 리스트 score_ls 의 원소를 문제 번호에 맞게 순차적으로 빼내어 5 개로 정렬된 리스트의 원소에 있는지 없는지를 판별하여 있다면 그..

공부하기/백준 2023.01.03

[Python] 백준 풀기 11441 - 합 구하기

파이썬 백준 11441번 실버 3 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 문제 보기 분류: 누적 합 문제 풀기 주어진 모든 숫자들에 대하여 순차적으로 누적 합을 구하여 새 리스트에 저장을 한다. 예제 입력 1 의 경우 리스트의 index 를 맞추기 위해 0 으로 시작해서 0+10, 0+10+20, 0+10+20+30, ,,, 규칙으로 저장해 나간다. 결과적으로 i ..

공부하기/백준 2023.01.02

[Python] 백준 풀기 1431 - 시리얼 번호

파이썬 백준 1431번 실버 3 https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 가장 바깥 리스트를 시리얼 번호 최대 길이인 50+1 로 지정하고 기타의 시리얼 번호를 입력받을 때마다 각 index 에 맞게 누적하여 저장한다. 저장하기 전에 함수 fnSumOfNum(serial) 에 넣어 숫자만 판별하여 그 수를 모두 더하고 sNum_serial 에 첫 번째에 그 합을 두 번째에 시리얼 번호를 모은다. 예..

공부하기/백준 2023.01.01

[Python] 백준 풀기 11728 - 배열 합치기

파이썬 백준 11728번 실버 5 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 문제 보기 분류: 정렬, 두 포인터 문제 풀기 올해 2022년 마지막 날에 푸는 마지막 백준 문제이다. 시간복잡도를 주의해야 할 것 같다. 각각의 배열의 최대 크기는 1_000_000 까지 주어지기에 extend() 함수를 이용하면 뒤에 붙여질 배열의 최대 크기인 1_000_000 까지 시간복잡도가 발생한다. O(len(othe..

공부하기/백준 2022.12.31

[Java 복습] DAO, DTO 작동 구조 연습

DAO, DTO 구조에 대한 이해가 부족하기에 이에 대한 연습을 하기위해 나만의 간단한 형식의 Main, DAO, DTO 클래스를 작성하여 데이터 프린트를 해보았다. 데이터 교환 역할을 할 DTO // SmallDto.java package dto; public class SmallDto { private int num1; private int num2; public SmallDto() {} public SmallDto(int num1, int num2) { super(); this.num1 = num1; this.num2 = num2; } public int getNum1() { return num1; } public void setNum1(int num1) { this.num1 = num1; } pu..

[Python] 백준 풀기 11655 - ROT13

파이썬 백준 11655번 브론즈 1 https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 개별 알파벳 문자를 ASCII 코드와 대응하는 10진수로 변환한다. 변환된 숫자로 기준이될 10진수 위치를 0에 고정하여 +13 쉬프트 시키고 26으로 나눈 나머지를 통해 Z 이후의 알파벳의 숫자를 재조정한다. c = ((c - 65) + 13) % 26 + 65 c = ((c - 97) + 13) % 26 + 97 10진수를 다시 알파벳으로 변환하고 합쳐 출력한다. input() 을 이용..

공부하기/백준 2022.12.30

[Python] 백준 풀기 2941 - 크로아티아 알파벳

파이썬 백준 2941번 실버 5 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 크로아티아 알파벳을 리스트에 저장한 후 하나씩 뽑아 주어진 단어에서 해당 문자열을 찾는다. 함수 replace() 를 이용하여 크로아티아 알파벳을 단일 특수 문자로 변환 시킨다. 일반 알파벳과 단일 특수문자인 @ 으로 새로이 작성된 단어의 길이를 구해 총 알파벳의 개수를 출력한다. 코드..

공부하기/백준 2022.12.29

[Python] 백준 풀기 1453 - 피시방 알바

파이썬 백준 1453번 브론즈 2 https://www.acmicpc.net/problem/1453 1453번: 피시방 알바 첫째 줄에 손님의 수 N이 주어진다. N은 100보다 작거나 같다. 둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 입력으로 주어진다. www.acmicpc.net 문제 보기 분류: 구현 문제 풀기 리스트로 100개의 컴퓨터 자리를 0으로 초기화 하여 생성한다. 손님이 원하는 자리의 index가 0으로 되었있으면 빈 자리이기에 1로 바꾸어 준다. 만약 손님이 원하는 자리가 0이 아닌 1로 되어있을 경우 변수 count를 하나씩 올려준다. 코드 보기 import sys inputdata = sys.stdin.readline def fnNumberOfRejectio..

공부하기/백준 2022.12.28

[Python] 백준 풀기 5635 - 생일

파이썬 백준 5635번 실버 5 https://www.acmicpc.net/problem/5635 5635번: 생일 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 구현, 문자열, 정렬 문제 풀기 분할되어있는 일, 월, 년 숫자를 공백없이 년월일(20221227) 8자리 숫자로 붙이고 이름과 함께 리스트에 저장한다. 문자형 숫자로 된 생일을 정렬하여 가장 나이가 많은 사람, 가장 나이가 적은 사람을 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline def fnRearrange(): restdt_info = [] if len(stdt_info[..

공부하기/백준 2022.12.27