목록전체 글 (408)
오답노트
input() 파이썬에서는 input() 함수를 통해 입력할 수 있다. input()는 한 줄의 입력을 받을 수 있다. input() 사용법 input()과 문자열 출력 input() 함수로 입력되는 값은 문자열이고, input()에 인자로 문자열을 입력하면 콘솔 창에 문자열이 출력되면서 입력을 기다린다. input() 공백 기준 나누기 input() 함수의 반환은 문자열이다. 그러므로 문자열 관련된 함수를 사용하여 문자열을 자를 수 있다. 또 나눈 값들을 각각의 변수 또는 리스트에 입력할 수 있다. 각각의 변수에 입력할 때는 map() 함수를 사용하고, 이를 리스트의 원소로서 입력할 때는 list()로 자료형을 지정하여 입력할 수 있다. a,b = map(int,input().split()) l = l..
https://replit.com/languages/python3 Python Online Compiler & Interpreter Write and run Python code using our Python online compiler & interpreter. You can build, share, and host applications right from your browser! replit.com 위 사이트는 웹에서 간단하게 소스를 컴파일 하여 출력을 볼 수 있다. IDE를 구지 설치하고 싶지는 않지만 소스를 컴파일해서 결과를 보고 싶을 때 유용하게 사용될 것 같다. 사용법도 간단하다. 소스를 입력하고 재생 버튼을 누르면 옆에 콘솔이 동작하고 값을 입력하면 출력이 나온다. 세상이 너무 좋아졌다.
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net - 문제 파악 컴퓨터는 1번부터 100번까지 넘버링된다. 1번 컴퓨터에는 바이러스가 존재하고 이 바이러스는 연결된 컴퓨터에 전파된다. 임의의 개수 만큼 서로 연결된 컴퓨터가 입력될 때, 바이러스에 감염된 컴퓨터의 개수를 출력하라. - 정답 BFS에서 가장 중요한건 내가 들렸던 곳을 체크하는 것이다. 전체적인 로직은 맞음에도 이것을 제대로 처리를 안했더니 초반부터 틀렸다... #include "bits/..
https://programmers.co.kr/learn/courses/30/lessons/43165?language=cpp 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr - 문제파악 정수 배열과 타겟 넘버가 주어진다. 정수의 배열을 적절히 더하거나 빼서 타겟넘버를 만들 수 있는 경우의 수를 구하여라 - 정답 BFS/DFS 로 구분되어 있긴한데 굳이 그렇게 안풀고 그냥 재귀함수로 풀었다. 시간복잡도도 엄청 여유로운편.. #include #include using namespace st..
https://programmers.co.kr/learn/courses/30/lessons/42839?language=cpp 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr - 문제 파악 7자리 정수를 문자열로 입력된다. 이때 문자를 적절히 조합하여 소수가 되는 경우의 수를 출력하라. - 정답 재귀에서 모든 경우의 수를 볼 때, 문자열 처리를 이상하게 해서 애먹었다. 생각을 제대로 하자 #include "bits/stdc++.h" using namespace std; int arr[8]; boo..
https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net - 문제파악 수열의 개수 N과 자연수 M 그리고 N개의 수열이 주어진다. 수열의 연속합이 M이 되는 경우의 수를 출력하라 - 정답 투 포인터를 활용한다. 시작 포인터로 부터 종료 포인터까지의 합이 M보다 크거나 같을 때까지 종료 포인터를 증가 시킨다. 만약 M과 연속합이 같으면 경우의 수를 증가시키고 아니면 연속합에서 시작포인터의 요소를 빼고, 시작 포인터..
https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net - 문제 파악 주어진 자연수 N을 소수의 연속합으로 나타낼 수 있다. 이때 나타낼 수 있는 경우의 수를 출력하라. 경우의 수가 없다면 0을 출력하라. - 정답 투 포인터를 이용하여 N보다 큰 연속합일 때 종료 포인터를 멈추고 시작 포인터를 증가 시킨다. 이전 시작 포인터 값을 연속합에서 빼고 다시 종료 포인터를 N보타 큰 연속합일 때 멈추는 것을 반복한다. 위 작업을 반복하여 연속합이 N이 되는 경우의 수를 출력한다. #include "bits/stdc++.h" using namespace std; int arr[4..
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net - 문제파악 N개의 수열이 주어지고 수열의 연속되는 원소의 부분합이 입력으로 주어지는 S이상인 경우 중, 부분합의 길이가 가장 짧은 길이를 출력하라 - 정답 투 포인터 연습문제.. 지만 골드 문제다.. 시작 포인터와 종료 포인터가 있고 시작 포인터는 for문으로 계속 증가 시키고 종료 포인터는 문제의 조건이 성립할 때 멈춘다. 해당 문제는 시작 포인터로 부터 연속되는 원소의 부분합이..
https://www.acmicpc.net/problem/13414 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net - 문제파악 K명 수강가능한 강의에서 L명(L명 중에 같은 사람이 있을수도 있다)이 수강신청하려고 한다. 수강신청은 다음과 같은 규칙이 있다. 첫째 수강신청을 하면 대기열에 올라간다. 둘째 대기열에 올라간 사람이 다시 수강신청을 누르면 대기열에서 마지막으로 밀려난다. 세번째 대기열에 올라간 사람들중 순서가 가장 빠른 순으로 K명 수강신청이 완료된다. 수강신청 버튼을 누른 학생들의 학번..
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net - 문제파악 포켓몬의 이름이 N개 이다솜이 알고싶은 포켓몬의 이름 또는 포켓몬의 숫자가 M개 입력된다. 이 때 이다솜이 알고 싶은 포켓몬의 이름 또는 포켓몬의 숫자를 출력하라. 포켓몬의 숫자는 처음에 입력될 때 들어온 순서다. - 정답 unordered_map 변수를 두 개 선언했지만 숫자를 물어보면 이름을 답하는건 배열로 해도 충분하다. #include "bits//..