분류 전체보기 811

백준 1357번 뒤집힌 덧셈 C++

리뷰reverse와 stoi, to_string메서드를 활용하게 된 문제였다. 이 부분은 파이썬보단 쉽게 로직구현이 가능할 듯 싶다. 문제 풀이문자열 변수 a, b에 입력값을 받아준 후 a, b모두 문자열을 뒤집어 준다.문자열 변수 ans에 a와 b를 정수로 변환한 값을 더해준 후 to_string을 통해 문자열로 변환한 값을 초기화 해준다.ans 문자열을 뒤집고 정수형으로 변환하여 출력해 준다. 참고 사항ans문자열을 뒤집은 후 정수형으로 바꿔서 출력해 줘야 한다. ans 그대로 출력했다가 틀렸다.반례64 46정수형으로 바꾸지 않을 경우 011이 노출된다, 정수형으로 바꾼다면 11이 노출될 것이다.정답 코드#include #include #include using namespace std;int mai..

백준 2902번 KMP는 왜 KMP일까? C++

리뷰stringstream과 getline 메서드를 처음으로 알게 된 문제, 파이썬이라면 split으로 금방 풀 수있겠지만 C++은 너무 불친절한 느낌.. 문제 풀이문자열을 입력 받고 해당 문자열을 stringstream 타입의 변수로 생성해 준다.정답을 출력할 문자열과 임시로 받아올 문자열을 각각 빈 문자열로 초기화 해준다.while 루프를 돌며 -을 기준으로 문자열을 분리하고 각각 문자열의 첫번째 문자만 정답 문자열에 더해준다.while 루프가 종료된 후 정답 문자열을 출력해 준다. 참고 사항getline함수는 통해 문자열이 반환되었을 경우 true, 더이상 반환할 문자열이 없을 경우 false를 리턴한다.  정답 코드#include #include #include using namespace std..

백준 3040번 백설 공주와 일곱 난쟁이 파이썬

리뷰itertools 모듈을 처음으로 활용해본 문제 문제 풀이입력값을 리스트로 받아주고 permutations를 통해 해당 리스트에서 만들 수 있는 7개 길이의 모든 리스트를 생성해당 리스트를 for문으로 돌며 합계가 100인 경우 각 요소를 출력하고 break 처리한다. 참고 사항문제에 100이 되는 경우가 유일하게 주어지므로 break는 굳이 안해줘도 될듯  정답 코드from itertools import permutationslst = [int(input()) for _ in range(9)]results = permutations(lst, 7)for result in results: if sum(result) == 100: for i in result: pri..

백준 13549번 숨바꼭질 3 파이썬, C++

리뷰BFS를 통한 풀이, 기존 숨바꼭질 보다 조건이 추가되었다, 순간 이동 시 소요되는 시간이 사라졌음 문제 풀이n, k값을 입력 받고 bfs의 인자로 n, k , 0을 보내준다.while루프를 돌기 전에 큐에 현재 위치와 시간 정보를 담아주고 100001 크기의 방문 배열을 false로 초기화 한다.현재 위치를 true로 설정하고 while루프를 시작한다.이동할 수 있는 위치는 총 세가지다 x - 1, x + 1, x * 2 이 중 순간이동을 하는 경우는 시간이 소요되지 않는다.시간을 소요하지 않는 순간이동을 가장 먼저 수행 후 조건에 맞다면 큐에 넣어준다.이후 뺄셈, 덧셈 순으로 조건이 맞을 경우 큐에 추가해 준다.bfs종료 후 리턴값을 출력하면 된다. 참고 사항덧셈과 곱셈을 할때 k와 뺄셈한 거리보..

백준 21180번 Reconstruct Sum C++, 파이썬

리뷰파이썬이랑 C++ 시간 차이가 대단하다! 문제 풀이n을 입력 받아주고 n크기의 벡터에 숫자를 입력 받아준다.합을 나타낼 sum을 0으로 초기화 해주고, 정답을 체크할 ans를 100001로 초기화 한다.for문을 돌며 현재 숫자가 전체 벡터합에서 자신을 뺀수와 동일하다면 ans를 최신화 하고 break 해준다.for문이 종료된 후 ans가 그대로 100001이면 BAD를 출력, 아니라면 ans값을 출력해 준다. 참고 사항입력될 수 있는 최대 수가 10^5이므로 ans를 100001로 초기화 해주었다.  정답 코드C++ 코드#include #include using namespace std;int main() { int n; int sum = 0; int ans = 100001; cin >> n; ve..

백준 2153번 소수 단어 파이썬

리뷰딕셔너리와 에라토스테네스의 체로 풀이하였다. 문제 풀이a~Z범위의 알파벳을 키로 갖고 각 순서를 value로 갖는 딕셔너리를 초기화 해준다.문자열을 입력 받고 각 문자를 딕셔너리와 비교하여 value의 합을 구한다.점수가 나올 수 있는 최대값 보다 크게 배열을 1로 초기화 하고 소수의 경우 0으로 최신화 해준다.배열의 점수 인덱스가 1이라면 소수 0이라면 소수가 아님을 출력해 준다. 참고 사항없음  정답 코드dic = {}point = 1for i in range(97, 123): dic[chr(i)] = point point += 1for i in range(65, 91): dic[chr(i)] = point point += 1s = input()prime = 0for char..

백준 1629번 곱셈 파이썬

리뷰모듈러 연산을 통한 재귀 풀이 문제 풀이모듈러 연산의 성질을 활용하여 재귀를 통해 값을 구하였다.초기 입력받은 a, b, c를 재귀를 사용할 함수에 보내준다.a가 밑, b가 지수이므로 b가 0이 될때까지 실행을 하고 b가 0일 경우 a^b는 1이므로 1을 리턴해 준다.b가 0보다 클 경우 b를 0으로 나눈 값을 재귀 시킨다, 이후 짝수일 때는 a^(b/2) * a^(b/2)를 c로 나눈 나머지 값을 half로 정의, 홀수일 때는 짝수에서 나온 값 half에 밑 a를 한번 더 곱해준 후 c로 나눈 나머지 값을 half로 정의한다.이후 half를 리턴해 주면 된다. 참고 사항모듈러 연산 정보덧셈: (a+b)%m=((a%m)+(b%m))%m곱셈: (a×b)%m=((a%m)×(b%m))%m거듭제곱: (a^b..

백준 15663번 N과 M (9) 파이썬

리뷰리스트, 튜플, 세트, BFS를 짬뽕하여 풀었다. 이게 최적화 코드인지는 잘 모르겠다.. 문제 풀이n, m값과 숫자 리스트를 입력 받고 정답을 저장할 빈 set를 초기화 해준다.BFS에 n과 m, 그리고 방문 처리와 임시 저장용 빈 리스트를 초기 기본값으로 세팅해준다.임시 리스트가 m의 길이와 같을 경우 해당 리스트를 튜플로 변환하여 set에 add를 해준다.i번째 인덱스에 첫 방문일 경우 방문 처리 및 리스트에 값을 저장해 주고 재귀를 호출해 준다.이후 for문을 돌기 전에 방문처리와 추가했던 값을 다시 빼준다.모든 작업이 완료된 경우 set를 리스트로 변환 후 오름차순으로 정렬해 준다.정답 리스트를 순회하며 값이 저장된 리스트를 언패킹하여 출력해 준다. 참고 사항set를 사용함으로서 자동으로 중복..

SWEA 4193번 D4 수영대회 결승전 ( 완전 탐색 + 구현 ) C++, 파이썬

리뷰1BFS를 사용해 문제를 풀었다!문제 풀이테스트 케이스의 개수를 받아와 FOR문을 개행하고 배열의 크기 N을 받아와 N*N크기의 벡터에 값을 채워준다.시작 지점과 도착 지점을 입력받아 시작 지점을 (x, y, 0)의 튜플로 만들어 준다, 4방향 리스트도 전역으로 초기화.bfs의 인자로 만들어둔 튜플과 도착 지점의 x, y좌표를 넘겨준다. 나머지는 전역변수로 활용해준다.받아온 튜플을 큐에 삽입하고 while루프를 실행한다.큐의 제일 앞 데이터를 꺼내 x, y, time으로 초기화 해준다, 만약 목표 지점에 도착했으면 time을 return4방향 리스트를 돌면서 다음 좌표를 갱신한다. 범위를 넘어가지 않을 경우 2가지 경우에 대해 따로 처리해 준다.다음 좌표가 0일 경우 해당 위치를 시간 + 1값으로 할..

백준 11725번 트리의 부모 찾기 파이썬

리뷰딕셔너리와 BFS를 활용하여 문제를 해결했다. 문제 풀이KEY는 1에서 N, VALUE를 빈 리스트로 갖는 딕셔너리를 초기화 해준다.정점 A, B를 받아오고 딕셔너리의 각각의 KEY와 VALUE로 간선을 추가해 준다.N + 1크기의 방문을 체크할 리스트를 0으로 초기화 해준다.루트를 1로 가정했으므로 BFS를 1을 인자로 주고 시작해준다.1을 큐에 넣어주고, 1을 방문처리 해준다. 이후 WHILE루프를 시작하여 현재 처리할 숫자의 VALUE값을 탐색하고 만약 방문하지 INDEX이라면 현재 숫자가 해당 INDEX의 부모가 된다.BFS가 종료되면 방문 배열 리스트를 INDEX 2부터 차례대로 출력해 주면 된다. 참고 사항출력은 2부터 N + 1까지 해줘야 한다.  정답 코드import sys, colle..

728x90