[Algorithm] 알파벳 찾기 - 백준 10809
·
Algorithm
문제알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.입력첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.출력각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.예제 입력 1 baekjoon예제 출력 1 1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1..
[Algorithm] 최빈값 찾기
·
Algorithm
문제 , 입력, 출력Q. 다음과 같은 문자열을 입력받았을 때, 어떤 알파벳이 가장 많이 포함되어 있는지 반환하시오. (단 최빈값을 가진 알파벳이 여러개일 경우 알파벳 순서가 가장 앞에 위치한 알파벳을 출력하시오) 라는 문제인데, 예를 들어 입력이 aaaabbbccd 라면, a 가 출력이 되면 된다.내가 처음 풀었을 때는 다음과 같이 해결 했다.(편의상 콘솔 입력은 생략)SolutionV0 static String findMaxOccurredAlphabetV0(String string) { // 문자열을 먼저 쪼개 봅시다 String[] arr = string.split(""); // 알파벳을 카운팅할 배열도 만듭시다 // a = 0 , b = 1 , c ..
[Algorithm] 봉우리
·
Algorithm
지도 정보가 N*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다.각 격자판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다. 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요.격자의 가장자리는 0으로 초기화 되었다고 가정한다.만약 N=5 이고, 격자판의 숫자가 다음과 같다면 봉우리의 개수는 10개입니다.입력 첫 줄에 자연수 N이 주어진다.(2두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지 않는다.출력 봉우리의 개수를 출력하세요.풀이선택 값 기준 4가지 조건을 구해서 구현하면 되는 문제이다.단, 테두리가 0이니까 i 와 j 인덱스가 어디서부터 시작해서 어디서 끝나는지 반복문을 잘 설정하면 되는 간단한 문제였다.impo..
[Algorithm] 격자판 최대 합
·
Algorithm
5*5 격자판에 아래롸 같이 숫자가 적혀있습니다.N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합니다.입력 첫 줄에 자연수 N이 주어진다.(2두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지 않는다.출력 최대합을 출력합니다. 풀이아래와 같이 4가지 경우의 수를 따진다.1. 가로 합 한 행씩 더해서 max 비교2. 세로 합 한 열씩 더해서 max 비교3. 좌측 상단에서 우측 하단으로 내려가는 대각4. 우측 상단에서 좌측 하단으로 내려가는 대각 import java.util.Scanner;public class Main { public static void main(String[] args) { Sca..
[Algorithm] 보이는 학생 -> 입력 및 복잡도 생각하고 풀기
·
Algorithm
설명선생님이 N명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 맨 앞에 서 있는선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)입력 첫 줄에 정수 N(5출력 선생님이 볼 수 있는 최대학생수를 출력한다. 이번 문제는 입력을 잘 읽어야한다..처음에 2중 for문으로 풀면 되겠구나 싶어서 풀어보려다가 발견한게, 100,000개의 케이스가 입력되었을 때, 2중 for문으로 풀게되면 O(n^2) 의 복잡도를 띄게 되고 1초안에 실행이 될 수 없는 것을 알게 되었다.즉 , 이 문제는 최대 값(학생의 키) 를 갱신해가며 count를 증가시키는 방법으로 해결하면 됐다.import ja..
length vs length()
·
Algorithm
코테 풀면서 제발 좀 까먹지 말자는 의미에서 마지막으로 정리한다.length = 배열에 사용, 배열의 크기 반환(길이)int[] ex = [1, 2, 3] // length : 3 / maxIndex : 2 length() = String 클래스의 메서드 -> 문자열 길이를 반환String temp = "apple";int stringLength = apple.length(); // 5 이런 실수는 IDE에 너무 의존하면 발생하는 실수 같다..근데 실수도 계속하면 실력이라고.. 이런 기초적인 문법 좀 확실히 깨닫고 넘어가자
[Algorithm] 회문 문자열
·
Algorithm
설명앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다.문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요.단 회문을 검사할 때 대소문자를 구분하지 않습니다.입력 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.출력 첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다.예시 입력 1 gooG예시 출력 1YES Solution 1import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class String7 { public static String Solut..
[Algorithm] 중복문자 제거하기
·
Algorithm
설명소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요.중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.입력 첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다.출력 첫 줄에 중복문자가 제거된 문자열을 출력합니다.예시 입력 1 ksekkset예시 출력 1kset Solutionpackage String;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.LinkedHashSet;import java.util.Set;public class Main { public static String S..
[Algorithm] 문자 찾기
·
Algorithm
문자 찾기설명한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.입력 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.문자열은 영어 알파벳으로만 구성되어 있습니다.출력 첫 줄에 해당 문자의 개수를 출력한다.예시 입력 1 Computercoolerc예시 출력 12 Solutionpackage String;import java.util.Scanner;public class Main { public static int Solution(String input, char target) { // 둘다 대문자화 해서 비교 inpu..