ALGORITHM 100

[백준] 17609번 회문

www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 문제 설명 : 회문이면 0, 유사회문이면 1, 그 외는 2를 출력 문제 풀이 : 두 포인터로 문자열의 앞 부분, 뒷 부분을 각각 증가 감소 시키면서 중앙 부분에서 만날 때까지 검사합니다. 만약 회문이 아니면 left를 넘어가서 검사하거나 right를 넘어가서 검사해서 중앙 부분에서 만난다면 유사회문이 됩니다. 유사 회문은 한 문자를 삭제하는 것이 조건입니다. import java.util.Scanner; public class Main{ s..

[백준] 17413번 단어 뒤집기2

www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 풀이 : flag 를 이용해서 true면 역순, false면 그냥 출력이 되도록 하였습니다. tag 까지는 그냥 출력하다가 > 를 만나면 flag를 true로 두어 이후 문자열은 역순으로 출력해야하기 때문에 stack에 넣습니다. 만약 공백을 만나면 스택이 비어있을 때까지 꺼냅니다. import java.util.Scanner; import java.util.S..

[프로그래머스] 올바른 괄호

programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 문제 설명 : 올바른 괄호이면 true , 아니면 false 출력 문제 풀이 : String s 길이만큼 반복문을 돌면서 열린괄호면 스택에 push 닫힌 괄호면 pop 합니다. 하지만 이렇게만 했을 때 ())) 이러한 경우도 true가 될 수 있기 때문에, 스택이 비어있을 때 닫힌 괄호가 들어온다면 push 해주어야합니다. impo..

[프로그래머스] 단속카메라

programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 문제 설명 : 고속도로를 이동하는 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지 구하기 문제 풀이 : routes 배열에서 진출 지점을 기준으로 오름차순 정렬을 합니다. 배열의 처음 원소의 진출 지점을 temp 변수에 넣고 다음 차량의 진입 지점을 비교하면서 만약, 진출 지점보다 진입 지점이 더 큰 숫자라면 카메라를 추가 하고 temp에 진출 지점을 갱신해줍니다. 예를 들어 [[-20,15], [-14,-5], [-18,-13], [-..

[프로그래머스] 카펫

programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 문제 설명 : 카펫의 가로 길이와 세로길이 구하기 문제 풀이 : 노란 격자의 약수를 확인하면서 구했습니다. 예를 들어 brown 가 24고 yellow가 24일 때, x를 증가시키면서 노란격자의 수와 나누어떨어지면 brown 개수인지 확인하였습니다. x y temp 1 24 54 2 12 32 3 8 26 4 6 24 -> brown 의 개수와 같기 때문에 각각 변의 길이..

[프로그래머스] 쿼드압축 후 개수 세기

programmers.co.kr/learn/courses/30/lessons/68936?language=java 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 문제 풀이 : 백준 2630번 색종이 만들기와 같은 문제 szcode.tistory.com/8 class Solution { static int n,zero = 0..

[백준] 14502번 연구소

www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 설명 : 2차원 배열에서 0은 빈칸, 1은 벽, 2는 바이러스 일 때 벽을 3개 세운 뒤 바이러스를 퍼지지 않은 안전 영역 크기의 최댓값을 구하기 문제 풀이 : 완전탐색으로 벽을 3개 세우고, 바이러스를 퍼뜨린 후, 안전 영역 중 최댓값을 구하면 됩니다. 2차원 배열 백트래킹으로 벽을 세워주기 위해 wall() 함수를 사용합니다. 3개의 벽을 조합하여 한 번 세웠을 때마다 safe()라는 함수로 갑니다. safe() ..

[프로그래머스] 위장

programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 문제 풀이 : 옷의 종류를 key로 종류의 갯수를 value로 해시테이블을 구성합니다. 해시테이블에 옷의 종류가 없다면 갯수를 1로 넣어주고, 옷의 종류가 있다면 갯수를 1씩 늘려줍니다. ex) headgear : yellow_het , green_turban eyewear : blue_sunglasses 만약 yellow_het 을 골랐을 때 eyewear를 안 입는 경우도 있습니다. 그렇기 때문에 headgear를 안 입는 경우, eyewear를 안 입는 경우 각 각 +1 을 해주어서 경우의 수를 구해줍니다. 이 때 둘 다 안 쓰는 경우는 제외시켜주어야 하기..

[SWEA] 1954. 달팽이 숫자

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 : 방법 1) 달팽이 행렬의 패턴은 시계방향으로 90도 만큼 계속 꺾인다. ( ㄱ,ㄴ,ㄱ,ㄴ,... ) 그렇기 때문에 변수 turn을 1이거나 -1 일 때로 설정하여 좌표 x와 y가 방향 전환이 되도록 한다. ex) turn = 1, n=4 일 때 (0,0)(0,1)(0,2)(0,3) turn = 1, n=3 일 때 (1,3)(2,3)(3,3) turn = -1, n=3 일 때 (3,2)(3,1)(3,..

[프로그래머스] 완주하지 못한 선수

programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr import java.util.Arrays; class Solution { public String solution(String[] participant, String[] completion) { Arrays.sort(participant); Arrays.sort(completion); int i; for (i = 0; i < co..