항해 1주차 미니웹프로젝트가 끝나고 2주차 주특기훈련주차에 들어갔다.
항해99기간동안 내려준 문제 28개를 풀어보자.
1.직사각형 별찍기
https://school.programmers.co.kr/learn/courses/30/lessons/12969
문제를 푼 시기는 사실 꽤 지났다. 하지만 제대로 100퍼센트 이해하기 위해 코드 리뷰를 본 후 이제서야 글을 쓴다.
프로그래머스에 각종 언어를 이용해 간단한 코딩테스트를 할 수 있다.
먼저 1번문제를 보겠다
https://school.programmers.co.kr/learn/courses/30/lessons/12969
코드 리뷰
먼저 빠르게 파악 할 것은 이중for문을 사용해 풀어야 한다는 점이다.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for (int i = 0; i < b; i++) {
for (int j = 0; j < a; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
코드 풀이
1.우선 대입값을 입력을 할 수 있게 scanner를 선언해준다.
2.대입할 수 있는 변수 int a 와 int b도 선언해준다.
3.이중for문을 사용한다.
4.첫 for 문장에 가로로 들어갈 i를 초기화해주고 조건을 적어주고 하나씩 커지는 코드를 써준다.
5.두번째 for 문장에 세로로 들어갈 코드를 써준다 (주의할점: 안쪽 for문에는 print를 써서 가로로 반복문이 실행되서 나오게끔 출력을 해야한다)
6.이중for문의 중괄호를 닫아주고 출력 선언을해준다.
2번문제.
빠르게 파악해야할 점은 우선 if 문을 쓴다는것.
코드리뷰
class Solution {
public String solution(int num) {
if(num %2 == 0) {
return ("Even");
} else
return ("Odd");
}
}
1.짝수 홀수를 구분해야 하는 문제이다.
2.첫 if 조건 num이라는 변수를 2로 나눴을때 나머지값이 0이면 짝수 아니면 홀수인 것은 당연한 사실.
3.나머지값이 0이면 짝수이니 리턴 "Even"를 출력하고 홀수는 나머지값이 0이 아니니까 else return("Odd")
내가 푼 방식은 위의 코드지만 다른사람의 코드를 보니 더 간단히 가능하다.
public class EvenOrOdd {
String evenOrOdd(int num) {
return num % 2 == 0 ? "Even": "Odd";
}
바로 삼항연산자[true:false]를 이용해 푸는것이다.
3번문제.
빠르게 파악해야 하는 점은 이것역시 if문을 이용해 풀어야한다는 점.
코드리뷰
class Solution {
public String solution(String s) {
String answer = "";
if(s.length() % 2 == 0){ //짝수
answer = s.substring(s.length()/2-1, s.length()/2+1);
}else { //홀수
answer = s.substring(s.length()/2, s.length()/2+1);
}
return answer;
}
}
1.문자열 s 에 대입을 해야한다는 것을 파악한다.
2.문자열의 길이를 판단해주는 메소드 substring을 이용.
3.s.substring을 이용해 첫 조건 짝수를 계산해야 하니 2로 나눴을때 1을 뺀값과 1을 더해준값을 구분.
4.대입을 하고 선언을 하면 가운데글자만 출력된다.
4번문제.
파악 해야할점은 if문과 for문을 동시에 사용해야 할것.
코드리뷰
class Solution {
public long solution(int a, int b) {
long answer = 0;
if(a>b){
int temp = b;
b=a;
a=temp;
}
for(int i = a; i<=b; i++){
answer+=i;
}
return answer;
}
}
1.대입할 값이 두개이니 정수형 변수 int a 와 int b를 선언.
2.answer를 0으로 초기화.
3.우선 a의 값을 담아줄 용기가 필요한다 temp를 이용해 해결.
4.이로써 a값과 b값은 바뀌었다.
5.반복문을 이용해 answer = answer + i 의 값을 리턴
5번문제
비교적 쉬운문제다. 형변환을 써주면 쉽게해결.
코드리뷰
public class StrToInt {
public int getStrToInt(String str) {
int num=Integer.parseInt(str);
return num;
}
1.문자열로 선언 되어있는 str을 Interger.parseInt(str)로 int 형변환을 시켜준다.
2.해결
댓글