알고리즘 문제풀이
-
[백준/BOJ] 16506번 CPU (C++)알고리즘 문제풀이/백준 2021. 10. 10. 18:58
https://www.acmicpc.net/problem/16506 16506번: CPU 디지털하드웨어설계 과목의 최종 프로젝트는 16-bit CPU를 설계하고 Verilog 언어로 구현하는 것이다. 본인이 구현한 CPU가 제대로 동작하는지 테스트하기 위해서는 기계어 코드를 입력으로 주어야 www.acmicpc.net 다시 풀기 : 제한시간 20분 빡구현 문제이다. 12~15번 비트 조건 처리를 하는데 조금 애먹었다. 문제 해결 방법 자체는 어렵지 않다. opcode에 해당하는 비트와 4, 5번 비트를 map을 선언해 미리 이진수 값을 넣어줬다. 나머지 입력값을 이진수로 바꿔서 더해주고, 12~15번 비트 처리일 때 4번 비트가 1이면 4개의 비트가 필요하므로, 이에 대한 처리를 따로 진행해줬다. (이때..
-
[백준/BOJ] 3568번 iSharp (C++)알고리즘 문제풀이/백준 2021. 10. 10. 17:20
https://www.acmicpc.net/problem/3568 3568번: iSharp 입력으로 주어진 변수 선언문을 문제의 조건에 맞게 변형한 뒤, 한 줄에 하나씩 출력한다. 변수형과 변수명 사이에는 공백이 하나 있어야 한다. 출력은 입력으로 주어진 변수 선언문에서 변수가 www.acmicpc.net 구현 자체는 어렵지 않은데 고려해야 할 사항이 많아서 까다롭다. 첫 번째로 변수 오른쪽 옆에 붙은 &, *, []을 왼쪽으로 역순으로 옮길 때, []은 모양이 유지 되어야 한다. 두 번째는 변수명이 두 글자 이상일 수 있다. 예를들어 aa, AbCdE 등이 될 수 있다. #include #include #include using namespace std; int main(void) { //ios_bas..
-
[프로그래머스/위클리 챌린지] 9주차 (C++)알고리즘 문제풀이/프로그래머스 2021. 10. 8. 18:03
https://programmers.co.kr/learn/courses/30/lessons/86971 코딩테스트 연습 - 9주차 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr BFS와 구현력을 요구하는 어렵지 않은 문제였다. 예전에 네이버에 이와 비슷한 문제가 나온적이 있어서 쉽게 풀었다. 간선을 하나씩 제거한 것을 기록하기 위해 2차원 배열을 이용했다. 그 후 BFS를 이용해 트리를 탐색하는데, 체크한 간선을 구성하고 있는 노드를 탐색하려고 하면 그대로 continue 해준다. 이런식으로 나눠진 트리의 노드 수를 각각 구하고, 이들의 차의 절댓값이..
-
[프로그래머스/SQL] 헤비 유저가 소유한 장소 (MySQL)알고리즘 문제풀이/프로그래머스 2021. 10. 7. 14:09
https://programmers.co.kr/learn/courses/30/lessons/77487 코딩테스트 연습 - 헤비 유저가 소유한 장소 PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 programmers.co.kr 해커랭크의 SQL 문제는 어렵던데,,, 이건 너무 쉬워서 당황했다. 다음 데브매칭에도 이렇게 쉽게 나오면 좋겠다. 일단 헤비 유저인 HOST_ID를 먼저 구해야하기 때문에 아래와 같이 코드를 작성했다. SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_I..
-
[프로그래머스/위클리 챌린지] 6주차 (C++)알고리즘 문제풀이/프로그래머스 2021. 10. 6. 15:49
https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차_복서 정렬하기 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 어렵지않은 구현 + 정렬 문제였다. 주의할 점은 복싱 시합 결과가 'N'일 때는 전체 경기 횟수로 포함되지 않는다는 점, 그리고 나누는 수가 0이될 때 따로 예외처리를 해줘야하는 점이다. #include #include #include using namespace std; struct Boxer { int num, ..
-
[백준/BOJ] 2615번 오목 (C++)알고리즘 문제풀이/백준 2021. 10. 5. 17:58
https://www.acmicpc.net/problem/2615 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호 www.acmicpc.net 그렇게 어렵지 않는 구현 문제였다. 주의할 점이 하나 있는데 오목인지 확인할 때, 다음과 같이 4방향으로 고려해야한다. 4방향인데, 각각 2번씩 탐색을 하는 것이다. 이렇게 해서 오목이 되는지 확인하면 된다. #include #include #include #include using namespace std; int map[20][20], win; int dx[2][4] = { {-1, -1, -..
-
[백준/BOJ] 1063번 킹 (C++)알고리즘 문제풀이/백준 2021. 10. 1. 16:55
https://www.acmicpc.net/problem/1063 1063번: 킹 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 www.acmicpc.net 크게 어렵지 않은 구현 문제이다. 다만 주의할 점이 있는데, 첫 번째는 예를들어 좌표가 A1이면 해당 좌표는 맨 왼쪽 아래를 의미한다. 이를 90도 방향으로 회전하면 배열처럼 사용할 수 있는데, 이렇게 하면 킹이 움직이는 방향도 90도 방향으로 회전해서 생각해줘야 한다. 그리고 두 번째는 좌표가 문자로 되어있기 때문에 이동 처리를 할 때는 숫자로 바꿔주고 마지막에 출력할 때는 다시 문자로 바꿔줘야 한다. #..
-
[백준/BOJ] 8979번 올림픽 (C++)알고리즘 문제풀이/백준 2021. 9. 30. 01:22
https://www.acmicpc.net/problem/8979 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 각각의 메달의 수가 같은 경우 등수 처리를 잘해줘야 하는 문제이다. 예를들어 입력이 다음과 같다면, 등수는 다음과 같이 된다. 4 3 1 1 2 0 -> 1 2 0 1 0 -> 2 3 0 1 0 -> 2 4 0 0 1 -> 4 나는 각각의 메달의 개수를 문자열로 변환하고, 이것을 map의 key로 사용하였다. 해당 문자열을 key로 했을 때 value가 0이라면 유일한 순위이..