Dash Insert

DashInsert 함수는 숫자로 구성된 문자열을 입력받은 뒤, 문자열 내에서 홀수가 연속되면 두 수 사이에 - 를 추가하고, 짝수가 연속되면 * 를 추가하는 기능을 갖고 있다. (예, 454 => 454, 4546793 => 454*67-9-3) DashInsert 함수를 완성하자. 출처

  • 입력 - 화면에서 숫자로 된 문자열을 입력받는다.
"4546793"
  • 출력 - *, -가 적절히 추가된 문자열을 화면에 출력한다.
"454*67-9-3"
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

37개의 풀이가 있습니다. 1 / 4 Page

python 3.4.2 입력스트링을 zip()을 사용하여 tuple 로 묶어서 계산했습니다.

in_str = input("Enter numbers: ") # 입력이 4546793 이면 in_str = '4546793'

result = in_str[0]
for a,b in zip(in_str[0:], in_str[1:]): # zip()으로 묶인 튜플은 ('4','5'),('5','4'),('4','6'),('6','7'),('7','9'),('9','3')
    if int(a)%2 == 0 and int(b)%2 == 0:
        result += '*' + b
    elif int(a)%2 == 1 and int(b)%2 == 1:
        result += '-' + b
    else:
        result += b

print(result)
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.util.Scanner;

public class DashInsertMain {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String num = scanner.nextLine();
        StringBuffer stringBuffer = new StringBuffer(num);
        //숫자를 String으로 입력받음

        boolean prevOdd = false;
        boolean currentOdd = false;
        int addCount=0;
        //addCount : 중간에 String 길이가 늘어나는 것 대처하기 위한 변수

        prevOdd = (num.charAt(0)%2 != 0) ? true : false;
        //for문 들어가기 전 첫번째 숫자가 홀수인지 먼저 확인

        for(int i=1, size=num.length(); i<size; i++){
            //첫번째는 이미 확인했으므로 i=0이 아닌 i=1부터.

            currentOdd = (num.charAt(i)%2 != 0) ? true : false;
            //for문 시작시 currentOdd 정보 입력

            if(prevOdd == currentOdd && prevOdd){
                //둘 다 홀수일 경우
                stringBuffer.insert(i+addCount++, "-");
            }else if(prevOdd == currentOdd){
                //둘 다 짝수일 경우
                stringBuffer.insert(i+addCount++, "*");
            }

            prevOdd = currentOdd;
            //for문 넘기기 전에 prev 정보 입력
        }

        System.out.println("Output: "+stringBuffer.toString());

    }
}

자바로 짜봤어요!

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

PHP

$val = "4546793";
for($i=strlen($val)-1; $i>0; $i--) {
    $a = $val[$i]%2;
    $b = $val[$i-1]%2;
    if($in = ($a && $b)?'-':((!$a && !$b)?'*':false)) {
        $val = substr_replace($val, $in, $i, 0);
    }
}
echo $val;
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
def dhin(num):
    result=list(num)
    result.append('0')
    odd=['1','3','5','7','9','-1','-3','-5','-7','-9']
    even=['2','4','6','8','*2','*4','*6','*8']
    m=0
    for i in result:
        m=m+1
        if i != result[len(result)-1]:
            if i in even and result[m] in even:
                result[m]='*'+result[m]
            if i in odd and result[m] in odd:
                result[m]='-'+result[m]
            else:
                pass
    result.pop(-1)
    for u in result:
        result1=print(u,end='')
    return result1
print(dhin("4546793"))
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
package training;

/*
 * DashInsert 함수는 숫자로 구성된 문자열을 입력받은 뒤, 문자열 내에서 홀수가 연속되면 두 수 사이에 - 를 추가하고, 짝수가 연속되면 * 를 추가하는 기능을 갖고 있다. (예, 454 => 454, 4546793 => 454*67-9-3) DashInsert 함수를 완성하자. 출처
 * 입력 - 화면에서 숫자로 된 문자열을 입력받는다.
 * "4546793"
 * 출력 - *, -가 적절히 추가된 문자열을 화면에 출력한다.
 * "454*67-9-3"
 */
public class DashInsert {

    public static void main(String[] args) {
        String str = "4546793";
        char[] ch = str.toCharArray();
        StringBuffer sf = new StringBuffer();

        for(int i=0;i<ch.length;i++){
            if(i == ch.length-1){
                sf.append(ch[i]);
                break;
            }
            if(Integer.parseInt(String.valueOf(ch[i])) % 2 == 0 && Integer.parseInt(String.valueOf(ch[i+1])) % 2 == 0){ // 현재수와 다음수가 모두 짝수이면 
                sf.append(ch[i]+"*");
            } else if(Integer.parseInt(String.valueOf(ch[i])) % 2 != 0 && Integer.parseInt(String.valueOf(ch[i+1])) % 2 != 0){ // 현재수와 다음수가 모두 홀수이면
                sf.append(ch[i]+"-");
            } else {
                sf.append(ch[i]);
            }
        }
        System.out.println("Original Text : " + str);
        System.out.println("Transfer Text : " + sf);
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
public void go(String userinput) {
        int j=0;
        StringBuilder number = new StringBuilder(userinput);
        char [] num = userinput.toCharArray();


        for(int i=0 ; i<num.length-1 ; i++,j++) {

            int a = Integer.parseInt(String.valueOf(num[i]));
            int b = Integer.parseInt(String.valueOf(num[i+1]));
            if(a%2==0 && b%2==0) {
                number.insert(j+1,"*");
                j++;
            }else if ((a!=0&&b!=0) && (a%2!=0 && b%2!=0)) {
                number.insert(j+1, "-");
                j++;
            }

        }

        System.out.print(number);

        }



}

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
N = input("숫자를 입력하시오:   ")

def DashInsert(num):
    number = ""
    for i in range(len(num)-1):
        if int(num[i])%2 == 0 and int(num[i+1])%2 == 0:
            number += (num[i]+ '*')
        elif int(num[i])%2 != 0 and int(num[i+1])%2 != 0:
            number += (num[i] + '-')
        else: number += num[i]
    return number+num[-1]

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.util.*;

public class dashinsert {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String nums = sc.nextLine();          //6539864
        String [] array_nums = nums.split(""); //6,5,3,9,8,6,4

        ArrayList <String> list_nums = new ArrayList <String>();
        for(String i:array_nums){list_nums.add(i);} //["6","5","3","9","8","6","4"]

        for(int k=0;k<(array_nums.length)-1;k++){
            if(Integer.parseInt(list_nums.get(k))%2==1 && Integer.parseInt(list_nums.get(k+1))%2==1){
                list_nums.remove(k);
                list_nums.add(k,array_nums[k]+"-");
                }

            else if(Integer.parseInt(list_nums.get(k))%2==0 && Integer.parseInt(list_nums.get(k+1))%2==0){
                list_nums.remove(k);
                list_nums.add(k,array_nums[k]+"*");
                }
        }
        String result = "";
        for(String l:list_nums){result+=l;}
        System.out.println(result); 
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
public String numOddChecker(String input) {

        int preNum = 0;
        int nextNum = 0;
        String result = "";

        preNum = Character.getNumericValue(input.charAt(0)) % 2;

        result += input.charAt(0);

        for(int i = 1; i <input.length();i++){

            nextNum = Character.getNumericValue(input.charAt(i)) % 2;

            if(preNum == nextNum){

                if(preNum == 0){
                    result += "*";
                }else{
                    result += "-";
                }


            }

            result += input.charAt(i);
            preNum = nextNum;
        }
        return result;
    }
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
def dashinsert(n):
    n=str(n)
    result=str(n[0])
    for i in range(len(n)-1):
        if int(n[i])%2==0 and int(n[i+1])%2==0:
            result+="*"+str(n[i+1])
        elif int(n[i])%2==1 and int(n[i+1])%2==1:
            result+="-"+str(n[i+1])
        else:
            result+=str(n[i+1])
    print(result)
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

※ 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.


언어별 풀이 현황
전 체 x 37
python x 14
java x 13
php x 2
기 타 x 3
javascript x 2
cpp x 2
ruby x 1