본문 바로가기

코딩테스트 공부31

[C++] level1 비밀지도 50067 📌비밀지도 📌풀이 이 문제는 카카오 해설에서도 다음과 같이 적혀있다. 이 문제는 비트 연산(Bitwise Operation)을 묻는 문제입니다. 이미 문제 예시에 2진수로 처리하는 힌트가 포함되어 있고, 둘 중 하나가 1일 경우에 벽 #이 생기기 때문에 OR로 처리하면 간단히 풀 수 있습니다. 아주 쉬운 문제였던 만큼 if else로 풀이한 분들도 많이 발견되었는데요. 정답으로는 간주되지만 이 문제는 비트 연산을 잘 다룰 수 있는지를 묻고자 하는 의도였던 만큼 앞으로 이런 유형의 문제를 풀 때는 비트 연산을 꼭 기억하시기 바랍니다. 이 문제의 정답률은 81.78%입니다. 문제에서 입출력 예시를 설명하면서 다음과 같은 사진을 보여준다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으.. 2021. 8. 21.
[C++] level2 문자열 압축 50067 참고자료 해당 문제는 구글링을 통해 해결했으므로 상단에 참고한 사이트를 첨부한다. https://dokylee.tistory.com/81 📌문자열 압축 /*문제 설명은 생략한다. 링크 통해 문제로 갈 수 있음!*/📌풀이 to_string(cnt).size() return 값이 문자열의 길이이므로 자른 문자열은 별도로 저장할 필요 없이 size만 더해준다. 이 문제는 for문을 돌면서 주어진 s의 사이즈 만큼 돌면서 문자열을 자르고, 그 안에서 이전 단위 문자열과 새로 잘린 문자열을 비교하면서 같으면 중복 횟수를 증가, 다르면 카운트를 문자열로 변환 후 그 문자열의 자리수를 answer에 더해준다. 새로 잘린 문자열의 길이도 answer에 더해주고, 중복 횟수를 1로 초기화한다. 주의 할 점 마지막으로 잘.. 2021. 8. 21.
[C++] level2 2개 이하로 다른 비트 77885 참고자료 해당 문제는 구글링을 통해 해결하였기 때문에 참고한 블로그를 상단에 첨부한다. https://ansohxxn.github.io/programmers/148/#%EA%B7%9C%EC%B9%99-%EC%B0%BE%EA%B8%B0-2%EF%B8%8F%E2%83%A3-%ED%99%80%EC%88%98 https://ongveloper.tistory.com/59 📌2개 이하로 다른 비트 /*문제 설명은 생략*/📌풀이 조건 x보다 커야한다. x와 비트가 1~2개 다른 수들 중에서 제일 작은 수여야 한다. 이 두 조건을 만족하기 위해선 먼저 주어진 수들의 규칙을 찾아야한다. 2(10) -> 0010(2) 3(10) -> 0011(2) 4(10) -> 0100(2) 5(10) -> 0101(2) 6(10) -.. 2021. 8. 21.
[C++] level2 게임 맵 최단거리 1844 📌게임 맵 최단거리 /*문제 풀이가 사진이 조금 많아 생략. 링크로 들어가서 볼 수 있음!*/📌풀이 먼저 보자마자 BFS를 이용하여 최단 거리를 구해야겠다는 생각이 들었다! BFS 시 방문여부 체크와, 상하좌우 이동에 필요한 좌표를 전역변수로 생성bool visit[101][101] = {false, }; //방문여부 체크 //상 하 좌 우 int row[4] = {0, 0, -1, 1}; int col[4] = {1, -1, 0, 0}; BFS 탐색하면서 쓸 queue 생성 queue는 다음과 같이 frist에는 x, y의 좌표를 second에는 길이를 담도록 하였다.queue q; 로직 다음 거리 = 현재 거리 + 1 해서 다시 큐에 담는 형태 그러므로 탐색하려는 x, y가 maps의 마지막이라면 현.. 2021. 8. 21.
[C++] level2 카카오프렌즈 컬러링북 1829 📌카카오프렌즈 컬러링북 출판사의 편집자인 어피치는 네오에게 컬러링북에 들어갈 원화를 그려달라고 부탁하여 여러 장의 그림을 받았다. 여러 장의 그림을 난이도 순으로 컬러링북에 넣고 싶었던 어피치는 영역이 많으면 색칠하기가 까다로워 어려워진다는 사실을 발견하고 그림의 난이도를 영역의 수로 정의하였다. (영역이란 상하좌우로 연결된 같은 색상의 공간을 의미한다.) 그림에 몇 개의 영역이 있는지와 가장 큰 영역의 넓이는 얼마인지 계산하는 프로그램을 작성해보자. 위의 그림은 총 12개 영역으로 이루어져 있으며, 가장 넓은 영역은 어피치의 얼굴면으로 넓이는 120이다. 입력 형식 입력은 그림의 크기를 나타내는 m과 n, 그리고 그림을 나타내는 m × n 크기의 2차원 배열 picture로 주어진다. 제한조건은 아래와.. 2021. 8. 21.
[C++] level2 예상대진표 12985 📌예상대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다. 이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇.. 2021. 8. 21.