본문 바로가기

Dev80

[백준] #9663 N-Queen - 파이썬 문제N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (1 ≤ N 출력첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.예제 입력 1 8예제 출력 1 92복기1. 이중 루프를 돌면서 모든 경우를 탐색하는 경우로 생각했었는데, 각 행에는 하나의 퀸만 배치할 수 있기 때문에 행별로 확인하는 방식으로 풀어야 한다. 나는 처음에 퀸을 2개인거를 생각하고 풀었는데 문제를 제대로 읽어야겠다ㅠㅠ 즉, 한 행씩 순서대로 퀸을 배치하고, 그 행에서 가능한 모든 열을 시도한다.. Q . . (0행 1열). . . Q (1행 3열)Q . . . (2.. 2025. 8. 14.
[백준] #6443 애너그램 - 파이썬 문제씬디는 애너그램(anagram) 프로그램을 만들어 줄 수 있는 남자를 좋아한다. 참고로 씬디는 매우 예쁘다.애너그램 프로그램이란, 입력받은 영단어의 철자들로 만들 수 있는 모든 단어를 출력하는 것이다. 가령 "abc" 를 입력받았다면, "abc", "acb", "bac", "bca", "cab", "cba" 를 출력해야 한다.입력받은 단어내에 몇몇 철자가 중복될 수 있다. 이 경우 같은 단어가 여러 번 만들어 질 수 있는데, 한 번만 출력해야 한다. 또한 출력할 때에 알파벳 순서로 출력해야 한다.입력첫째 줄에 단어의 개수 N 이, 둘째 줄부터 N개의 영단어가 들어온다. 영단어는 소문자로 이루어져 있다. 단어의 길이는 20보다 작거나 같고, 애너그램의 수가 100,000개 이하인 단어만 입력으로 주어진.. 2025. 8. 11.
[백준] #2531 회전 초밥 - 파이썬 문제회전 초밥 음식점에는 회전하는 벨트 위에 여러 가지 종류의 초밥이 접시에 담겨 놓여 있고, 손님은 이 중에서 자기가 좋아하는 초밥을 골라서 먹는다. 초밥의 종류를 번호로 표현할 때, 다음 그림은 회전 초밥 음식점의 벨트 상태의 예를 보여주고 있다. 벨트 위에는 같은 종류의 초밥이 둘 이상 있을 수 있다.새로 문을 연 회전 초밥 음식점이 불경기로 영업이 어려워서, 다음과 같이 두 가지 행사를 통해서 매상을 올리고자 한다.원래 회전 초밥은 손님이 마음대로 초밥을 고르고, 먹은 초밥만큼 식대를 계산하지만, 벨트의 임의의 한 위치부터 k개의 접시를 연속해서 먹을 경우 할인된 정액 가격으로 제공한다.각 고객에게 초밥의 종류 하나가 쓰인 쿠폰을 발행하고, 1번 행사에 참가할 경우 이 쿠폰에 적혀진 종류의 초밥 .. 2025. 8. 8.
[백준] #1149 RGB거리 - 파이썬 문제RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.1번 집의 색은 2번 집의 색과 같지 않아야 한다.N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.입력첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 .. 2025. 8. 7.
[백준] #11660 구간 합 구하기5 - 파이썬 문제N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.1234234534564567여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.입력첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 .. 2025. 8. 7.
[백준] #24548 도로 정보 - 파이썬 문제현대오토에버는 국내 최초로 차량 운전 지원용 지도 생성을 위한 MMS (Mobile Mapping System) 기반 정밀지도 구축 시스템을 도입했다. 이는 고성능 레이저 스캐너 장치인 라이다 (LiDAR) 를 포함한 다양한 센서를 활용하여, 도로 및 주변 지형 등의 정보를 빠짐없이 취득하는 최첨단 3차원 공간정보 조사 시스템이다. 이 지도 정보를 활용하면 운전자에게 여러 편의 기능을 제공해줄 수 있다. 예를 들어 운전자에게 고성능 내비게이션 서비스를 제공할 수도 있고, 더 나아가 자율 주행에 필요한 도로 교통 정보를 제공해 줄 수도 있게 된다.현대오토에버의 연구원 알정이는 오늘 정밀지도 정보 수집 차량으로부터 특정 시내의 도로를 촬영한 데이터를 전달받았다. 이 데이터에는 도로 주변의 나무, 잔디, .. 2025. 8. 7.
Defaultdict 사용하기 defaultdict란?defaultdict는 Python의 collections 모듈에 포함된 클래스입니다. 일반적인 딕셔너리(dict)와 비슷하지만, 키가 존재하지 않을 때 기본값을 제공하는 기능을 추가로 제공합니다. 이를 통해 키가 없는 경우 KeyError를 발생시키는 대신, 지정된 기본값을 반환하거나 새로운 키-값 쌍을 자동으로 생성합니다.defaultdict는 첫 번째 인자로 기본값을 생성하는 팩토리 함수를 받습니다. 예를 들어, int, list, set 등을 팩토리로 사용할 수 있습니다. 키에 접근할 때 해당 키가 없으면 팩토리 함수가 호출되어 기본값이 생성됩니다.defaultdict의 동작 방식일반 dict: d = {}d['key'] += 1 # KeyError 발생: 'key'가 없기.. 2025. 8. 7.
[백준] #2343 기타 레슨 - 파이썬 문제강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다.강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블루레이는 모두 같은 크기이어야 한다.강토의 각 강의의 길이가 분 단.. 2025. 8. 1.
[백준] #31091 거짓말 - 파이썬 문제당신 앞에는 $N$명의 사람들이 있다. 각 사람은 자신을 포함하여 몇 명 이상이 거짓말을 하고 있다고 말하거나, 몇 명 이하의 사람이 거짓말을 하고 있다고 말한다.예를 들어, 각 사람이 다음과 같이 주장한다고 하자.첫 번째 사람이 이렇게 말한다: "1명 이상이 거짓말을 하고 있다!"두 번째와 세 번째 사람이 이렇게 말한다: "1명 이하가 거짓말을 하고 있다!"네 번째 사람이 이렇게 말한다: "2명 이상이 거짓말을 하고 있다!"이 경우에 가능한 시나리오는 다음과 같다.네 번째 사람만 거짓말을 하고 있다.두 번째와 세 번째 사람이 거짓말을 하고 있다.사람들의 주장이 주어질 때, 거짓말을 하는 사람의 수로 가능한 것을 모두 구해라.입력첫째 줄에 사람의 수 $N$이 주어진다.둘째 줄에 $N$개의 정수 $k_.. 2025. 7. 31.
[백준] #11058 크리보드 - 파이썬 문제크리보드는 kriii가 만든 신기한 키보드이다. 크리보드에는 버튼이 4개만 있으며, 하는 역할은 다음과 같다.화면에 A를 출력한다.Ctrl-A: 화면을 전체 선택한다Ctrl-C: 전체 선택한 내용을 버퍼에 복사한다Ctrl-V: 버퍼가 비어있지 않은 경우에는 화면에 출력된 문자열의 바로 뒤에 버퍼의 내용을 붙여넣는다.크리보드의 버튼을 총 N번 눌러서 화면에 출력된 A개수를 최대로하는 프로그램을 작성하시오.입력첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.출력크리보드의 버튼을 총 N번 눌러서 화면에 출력할 수 있는 A 개수의 최댓값을 출력한다.예제 입력 1 3예제 출력 1 3예제 입력 2 7예제 출력 2 9복기1. 패턴을 파악하기 너무 어렵다...ㅠㅠ2. 복붙을 하려면 전체선택(Ctrl+A) -> 복사.. 2025. 7. 23.