[C++] SWEA 1231번: 중위순회
·
problem solving/SWEA
🔗 문제 SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🖍 풀이 입력을 받을 때 .. 자식 0~2개수에 따라 어떻게 파싱해야하나 고민을 하느라 1시간 이상 풀었다. 개인적으로 이 문제부터 먼저 풀길 권한다. https://viin.tistory.com/121?category=986375 [C++] SWEA 1233번: 사칙연산 유효성 검사 🔗 문제 SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🖍 풀이 완전 이진 트리의 특성을 이용하여 풀자. 완전 이..
[C++] SWEA 1216번 :회문2
·
problem solving/SWEA
🔗 문제 [S/W 문제해결 기본] 3일차 - 회문2 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🖍 풀이 회문은 각 셀의 위치에서 오른쪽과 아래 방향으로 검색할 수 있다. 아래 방향으로 검색하는 식 세우는게 귀찮아서 전치 행열(arr2)을 만들어줬다. 문제의 목표는 가장 긴 회문의 길이다. 그렇다면 최대 회문 길이인 100부터 감소시키며 가장 먼저 찾은 회문으로 탐색 횟수를 줄여준다. for(answer = SIZE; answer>0; --answer) { if(FindLongestPelindrome(arr, answer)) break; else if(FindLongestPelindrome(arr2, ans..
[C++] SWEA 1210번: Ladder1
·
problem solving/SWEA
🔗 문제 SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🖍 풀이 사다리 0행부터 따라 내려가지 않는다. X부터 역으로 사다리를 거슬러 올라가 0행일 때의 answer열을 찾는 방법을 사용했다. X의 위치를 destination이라는 좌표로 저장하였다. 사다리 타기 특성상 양옆으로 가는 길이 있다면 위가 아닌 옆으로만 가야 한다. 이를 위해 dx, dy에 좌,우,상 좌표를 넣고 먼저 매치되는 방향 하나로만 탐색해준다. 사다리 방향 전환을 하며 이동전 위치로 돌아가지 않도록 visited로 재방문 방지도 해주었다. 💾 소스 #include #include int answer = 0..
[C++] SWEA 1288: 새로운 불면증 치료법
·
problem solving/SWEA
🔗 문제 SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🖍 풀이 이 문제를 비트를 응용해보자! 다른 사람들은 풀이를 찾아보다가 이해를 못하겠어서 이해할 겸 쓰는 글이다. 비트 플래그를 쓰는 풀이를 보니 생소한 구문이 있어서 정리해보았다. #include int main() { int T; std::cin >> T; for (int tc = 1; tc > N; int k = 0, checksum = 0, tmp = N; while (checksum != (1
[C++ / python] SWEA 1959: 두 개의 숫자열
·
problem solving/SWEA
🖍️ 풀이 주석 참고 💾 소스 #include #include // 길이 : A > B int solve(const std::vector& A, const std::vector& B) { int result = 0; // 마주보는 경우의 수만큼 이동한다. for(int i=0; i T; for(int test_case=1; test_case> N >> M; std::vector A(N), B(M); for(int i=0; i> A[i]; for(int i=0; i> B[i]; int answer = 0; if(N > M) answer = solve(A, B); else answer = solve(B, A); std::cout